1、目录目录RedisRedis DB DB基础基础1RedisRedis键值管理操作键值管理操作2RedisRedis集群架构及管理集群架构及管理3RedisRedis管理与监控管理与监控4小结小结51RedisRedis官网:官网:httpshttps:/redis.io/:/redis.io/2目录目录 RedisRedis是性能卓越、支持是性能卓越、支持多种数据结构键值多种数据结构键值存储且应用广泛存储且应用广泛的的NoSQLNoSQL数据库系统。数据库系统。本章学习内容本章学习内容思维导思维导图如下图如下nRedisRedis 支持支持unixunix 、linuxlinux、Windo
2、ws Windows等平台安装等平台安装nWindowsWindows版本版本下载下载安装安装httpshttps:/:/ 10.5 键键值类值类RedisRedis DB DB简介简介nWindowsWindows安装安装n执行执行Redis-x64-3.2.100.msiRedis-x64-3.2.100.msin安装路径:安装路径:C C:Program:Program FilesFilesRedisRedisn服务器服务器端运行端运行程序程序redis-server.exeredis-server.exe即可,默认端口即可,默认端口63796379。n客户端运行客户端运行程序程序red
3、isredis-cli-cli连接连接服务器服务器端。端。nRedisRedis Quit Quit 命令可关闭客户端与命令可关闭客户端与R Redisedis服务的连接服务的连接。nLinuxLinux安装安装n从从redis.ioredis.io下载最新版下载最新版redis-X.Y.Z.tar.gzredis-X.Y.Z.tar.gz后解压,然后后解压,然后进入进入redisredis-X.Y.Z-X.Y.Z文件夹后直接文件夹后直接makemake即可;即可;nmakemake成功后会在成功后会在srcsrc文件夹下产生一些二进制可执文件夹下产生一些二进制可执行文件,包括行文件,包括re
4、disredis-server-server、redisredis-cli-cli等;等;7.1.1下载与安装下载与安装 启动启动WindowWindow版本的版本的RedisRedis redisredis-server-server 或者在系统服务列表中启动服务或者在系统服务列表中启动服务 卸载卸载服务:服务:redisredis-Server-service-uninstall-Server-service-uninstall 开启开启服务:服务:redisredis-Server-service-start-Server-service-start 停止停止服务:服务:redisred
5、is-Server-service-stop-Server-service-stop 重命名重命名服务:服务:redisredis-Server-service-name name-Server-service-name name57.1.1下载与安装下载与安装6 启动客户端交互环境启动客户端交互环境 redisredis-cli-cli127.0.0.1:6379127.0.0.1:6379 PINGPINGPONGPONGredis-cli.exeredis-cli.exe也可带如下格式参数:也可带如下格式参数:redis-cli.exe redis-cli.exe-h 127.0.0.1
6、-p 6379-h 127.0.0.1-p 6379-a-a requirepassrequirepass 其中其中-h-h对应服务器地址,对应服务器地址,-p-p对应数据库端口号,对应数据库端口号,-a-a对对应连接数据库的密码,应连接数据库的密码,默认无密码默认无密码,可以在,可以在redis.windows.confredis.windows.conf中配置中配置。可可使用在线测试环境使用在线测试环境http:/try.redis.io/http:/try.redis.io/,该环境下不需要安装,该环境下不需要安装数据库服务,即可在线测试命令的执行效果。数据库服务,即可在线测试命令的执行
7、效果。LinuxLinux环境安装步骤类似环境安装步骤类似后续示例简化后续示例简化为为redisredis 7.1.1下载与安装下载与安装7 RedisRedis管理工具软件,如管理工具软件,如带自动折叠键带自动折叠键schemaschema的的工具工具RedisRedis Desktop Desktop Manager 2019Manager 2019版是收费版,可用版是收费版,可用V0.99V0.99 https https:/ RedisRedis Desktop Desktop ManagerManager添加键选择键类型,输入值修改键值等操作库切换7.1.2 操作命令分类操作命令分类
8、 RedisRedis数据库管理提供了丰富、简洁的操作命令,分类如下数据库管理提供了丰富、简洁的操作命令,分类如下9序号序号命令类型命令类型描述描述1Keys用于管理 redis 的键。如创建、查询、删除等2Strings用于管理字符串结构键值操作3Lists用于管理双向列表类型键值操作4Sets用于管理集合结构键值操作5Hashes用于管理散列结构键值操作6Sorted Sets用于管理有序集合结构键值操作7Pub/Sub 用于发布/订阅键值操作管理相关操作8Streams用于流结构键值操作管理相关操作9Geo用于地理空间相关键值操作10Cluster 用于集群管理相关操作11HyperLo
9、gLog用于做键值数据基数统计的操作命令集12Connection用于数据库链接管理相关操作13Transactions用于事务管理相关操作14Server用于服务器管理操作,如查看当前状态信息等15Scripting使用 Lua 解释器来执行脚本,执行脚本的常用命令7.1.2 操作命令分类操作命令分类 1 1)Geo:Geo:RedisRedis 为为GeoGeo类键值提供了丰富的操作,支持类键值提供了丰富的操作,支持基于地理空间(基于地理空间(geospatialgeospatial)索引半径查询索引半径查询,geoaddgeoadd命令用于添加地理坐标命令用于添加地理坐标;geoposg
10、eopos命令用于查询某个地理坐标命令用于查询某个地理坐标;删除使用删除使用zremzrem,本质上属于有序集合;,本质上属于有序集合;geodistgeodist命令用于查询两地之间的距离,可以指定命令用于查询两地之间的距离,可以指定单位,默认为米;单位,默认为米;geohashgeohash命令用于查询经纬度坐标对应的命令用于查询经纬度坐标对应的geohashgeohash值;值;二维二维经、纬度经、纬度 一维一维5252位的位的geohashgeohash字符串字符串 georadiusgeoradius命令用于返回距离某地一定半径范围内的命令用于返回距离某地一定半径范围内的地理坐标哈希
11、(地理坐标哈希(geohashgeohash)值,可以按距离排序)值,可以按距离排序。107.1.2 操作命令分类操作命令分类 2 2)HyperLogLogHyperLogLog:是用来做基数统计的算法命令:是用来做基数统计的算法命令。基数基数是指集合中不重复元素的个数是指集合中不重复元素的个数。RedisRedis中每个中每个 HyperLogLogHyperLogLog 键只需要花费键只需要花费 12 KB 12 KB 内存,就可以计算接近内存,就可以计算接近2 26464个不同元素的基数。在个不同元素的基数。在输入元素的数量或者体积非常大时,计算基数所输入元素的数量或者体积非常大时,计
12、算基数所需的空间仍然固定并且很小需的空间仍然固定并且很小。注:注:HyperLogLogHyperLogLog只会根据输入元素计算基数,只会根据输入元素计算基数,而不存储输入元素本身,所以而不存储输入元素本身,所以 HyperLogLogHyperLogLog不能不能像集合那样,返回输入的各个元素像集合那样,返回输入的各个元素。相关相关命令:命令:pfaddpfadd、pfcountpfcount、pfmergepfmerge117.1.2 操作命令分类操作命令分类 3 3)ConnectionConnection:命令主要用于管理客户端链接:命令主要用于管理客户端链接,例如例如如何通过密码验
13、证连接到如何通过密码验证连接到 RedisRedis 服务,并检服务,并检测服务是否在测服务是否在运行运行 PINGPING命令可以查看服务是否命令可以查看服务是否运行运行 QUITQUIT命令可以关闭当前命令可以关闭当前连接连接 SELECTSELECT命令可以切换到指定的命令可以切换到指定的数据库数据库 RedisRedis默认开启默认开启1616个数据库实例,个数据库实例,0-150-15 默认链接默认链接0 0号数据库号数据库 如切换到如切换到1010号数据库号数据库127.1.2 操作命令分类操作命令分类 4 4)TransactionsTransactions:RedisRedis
14、的所有单个操作都是原子性的所有单个操作都是原子性的,意思就是要么成功执行,要么失败完全不执的,意思就是要么成功执行,要么失败完全不执行行。多多个原子操作可通过个原子操作可通过MULTIMULTI和和EXECEXEC指令包起指令包起来作为一个整体来作为一个整体执行执行 但但 RedisRedis 没有在事务上增加任何维持原子性的机没有在事务上增加任何维持原子性的机制,所以制,所以RedisRedis事务可以理解为一个打包的批量事务可以理解为一个打包的批量执行脚本执行脚本。中间中间某条指令的失败不会导致前面已成功执行某条指令的失败不会导致前面已成功执行指令的回滚,也不会造成后续的指令不执行指令的回
15、滚,也不会造成后续的指令不执行。相关命令:相关命令:DISCARDDISCARD、WATCHWATCH、UNWATCHUNWATCH137.1.2 操作命令分类操作命令分类 5 5)ServerServer:该类命令该类命令主要用于管理数据库服务主要用于管理数据库服务,如:,如:CLIENT CLIENT KILL KILL 命令可用于关闭客户端命令可用于关闭客户端连接;连接;DBSIZEDBSIZE命令可用于获取当前数据库的命令可用于获取当前数据库的 Key Key 的的数量;数量;INFOINFO命令可用于获取命令可用于获取 RedisRedis 服务器的各种信息和统计服务器的各种信息和统
16、计数数值;值;6 6)ScriptingScripting:该该类类命令命令主要用于执行缓存中的主要用于执行缓存中的LuaLua脚本,脚本,如:如:SCRIPT SCRIPT EXISTSEXISTS用于检查脚本是否在缓存中用于检查脚本是否在缓存中;SCRIPT SCRIPT LOADLOAD可以将脚本添加到脚本缓存可以将脚本添加到脚本缓存中,中,但并不立但并不立即执行这个脚本即执行这个脚本;执行执行脚本的常用命令为脚本的常用命令为 EVALEVAL;SCRIPT SCRIPT KILLKILL可以终止当前正在运行的可以终止当前正在运行的LuaLua 脚本;脚本;147.2 Redis键值管理
17、操作键值管理操作 LuaLua简介简介 是巴西里约热内卢天主教大学是巴西里约热内卢天主教大学19931993年,用年,用C C语言编写的小语言编写的小巧的脚本语言;巧的脚本语言;目的是为了通过嵌入应用程序,为应用程序提供灵活的扩目的是为了通过嵌入应用程序,为应用程序提供灵活的扩展和定制展和定制功能;功能;LuaLua语言体积很小、启动速度快,从而适合嵌入在别的程语言体积很小、启动速度快,从而适合嵌入在别的程序里。序里。5.0.25.0.2版的版的LuaLua的内核小于的内核小于120KB120KB;同时支持面向过程同时支持面向过程(procedure-oriented)(procedure-o
18、riented)编程和函数式编程编程和函数式编程(functional programming(functional programming);RedisRedis命令命令+lualua脚本语言支持复杂的键值数据操作脚本语言支持复杂的键值数据操作 RedisRedis能够保证单条命令的原子性,一个脚本内操作能够保证单条命令的原子性,一个脚本内操作作为整体执行,可以很好弥补事务管理机制的不足作为整体执行,可以很好弥补事务管理机制的不足 语法参考:语法参考:http:/www.lua.org/15目录目录RedisRedis DB DB基础基础1RedisRedis键值管理操作键值管理操作2Red
19、isRedis集群架构及管理集群架构及管理3RedisRedis管理与监控管理与监控4小结小结516RedisRedis官网:官网:httpshttps:/redis.io/:/redis.io/KEY KEY是访问不同值的入口,具有唯一性,是访问不同值的入口,具有唯一性,RedisRedis提供提供了单独了单独对对键操作的命令集。键操作的命令集。匹配匹配:KEYS pattern 例如例如 keys*列出所有列出所有key值值删除:删除:DEL key key.例如例如 del list1 删除链表删除链表1是否存在:是否存在:EXISTS key键键值迁移:值迁移:MOVE key db-
20、移向数据库移向数据库 select 0 1可选择数据库可选择数据库查看数据类型查看数据类型:TYPE key 设置设置超时超时:EXPIRE key seconds/EXPIREAT key timestamp 取消取消超时:超时:PERSIST key RedisRedis在设计之初就被定义为长时间不间断运行的服务进程,在设计之初就被定义为长时间不间断运行的服务进程,因此大多数系统配置因此大多数系统配置参数参数修改及命令执行后修改及命令执行后都都可以在不重新启可以在不重新启动进程的情况下立即生效动进程的情况下立即生效,以下命令操作需慎之又慎:,以下命令操作需慎之又慎:flushall 清空所
21、有清空所有keys;flushdb 清空当前数据库清空当前数据库key;7.2.1 Key操作操作7.2.1 Key操作操作nRedisRedis常用常用KeyKey操作命令操作命令序号序号命令格式命令格式描述描述1del key该命令用于在该命令用于在 key 存在时删除存在时删除 key2keys pattern查找所有符合给定查找所有符合给定模式的模式的 key列表列表3exists key检查给定检查给定 key 是否存在,是否存在,存在为存在为1,不存在为,不存在为04expire keyseconds为给定为给定 key 设置过期时间,以秒计设置过期时间,以秒计5expireat
22、key timestampEXPIREAT 的作用和的作用和 EXPIRE 类似,都用于为类似,都用于为 key 设置过期时间不同之处在于设置过期时间不同之处在于 EXPIREAT 命令命令接受的时间参数是接受的时间参数是 UNIX 时间戳时间戳(UNIX Timestamp)6pexpire key milliseconds设置设置 key 的过期时间,以毫秒计的过期时间,以毫秒计7pexpireat key milliseconds-timestamp设置设置 key 过期时间的时间戳过期时间的时间戳(unix timestamp)以毫以毫秒计秒计7.2.1 Key操作操作nRedisRe
23、dis常用常用KeyKey操作命令操作命令序号序号命令格式命令格式描述描述8move key db将当前数据库的将当前数据库的 key 移动到给定的数据库移动到给定的数据库 db 当中当中9persist key移除移除 key 的过期时间,的过期时间,key 将持久保持将持久保持10pttl key以毫秒为单位返回以毫秒为单位返回 key剩余的过期时间剩余的过期时间11ttl key以秒为单位,返回给定以秒为单位,返回给定 key 的剩余生存时间的剩余生存时间(Time To Live,TTL)12randomkey从当前数据库中随机返回一个从当前数据库中随机返回一个 key。13renam
24、e key newkey修改修改 key 的名称为的名称为newkey。14renamenx key newkey仅当仅当 newkey 不存在时,将不存在时,将 key 改名为改名为 newkey15type key返回返回 key 所储存的值的类型所储存的值的类型7.2.1 Key操作操作1)1)添加添加一个键。一个键。redisredisset set pnumpnum 200 200 OKOK2)2)查询查询当前所有键。当前所有键。redisredis keys keys*3)3)获取获取指定指定keykey的数据结构类型的数据结构类型,返回值为字符串格式,若不存在则返回,返回值为字符
25、串格式,若不存在则返回nonenone。redisredistype type pnumpnum string string4)4)设置设置键的过期时间,单位为秒,返回键的过期时间,单位为秒,返回1 1表示设置成功。表示设置成功。redisredisexpire expire pnumpnum 5 5 1 15)5)获取获取指定指定keykey的过期时间,的过期时间,-1-1为没有设置过期时间,为没有设置过期时间,-2-2为已经超时不存在。为已经超时不存在。redisredis ttlttl pnumpnum -2 2 20 String String是最常用的一种是最常用的一种数据数据结构结
26、构类型类型,普通的,普通的key/value key/value 存存储都可以归为此类储都可以归为此类。值也可以是数值类字符串、图片、视频值也可以是数值类字符串、图片、视频等序列化对象,等序列化对象,ValueValue最多可以容纳的数据长度是最多可以容纳的数据长度是512M512M。1.赋值:赋值:SET key value EX seconds|PX milliseconds NX|XX 注:注:NX表示键不存在时赋值,表示键不存在时赋值,XX表示键存在时赋值表示键存在时赋值 MSET KEY1 VALUE1 KEY VALUE2SETBIT KEY OFFSET 1/02.取值:取值:G
27、ET KEY MGET KEY1 KEYGETBIT KEY OFFSET3.字符串操作:字符串操作:STRLEN KEYSETRANGE KEY OFFSET VALUESGETRANGE KEY START END4.数值操作:数值操作:INCR KEY DECR KEYINCRBY KEY decrement/DECRBY KEY decrement 7.2.2 字符串字符串7.2.1 Key操作操作 Redis常用字符串操作命令序号序号命令命令描述描述1set key value 设置指定 key 的值2get key 获取指定 key 的值3getrange key start en
28、d 返回 key 中字符串值的子字符串4getset key value将给定 key 的值设为 value,并返回 key 的旧值(old value)5getbit key offset对 key 所存储的字符串值,获取指定偏移量上的位(bit)6mget key1 key2.获取所有(一个或多个)给定 key 的值7setbit key offset value对 key 所存储的字符串值,设置或清除指定偏移量上的位(bit)8setex key seconds value将值 value 关联到 key,并将 key 的过期时间设为 seconds(以秒为单位)9setnx key v
29、alue只有在 key 不存在时设置 key 的值10setrange key offset value用 value 参数覆写给定 key 所存储的字符串值,从偏移量 offset 开始11strlen key返回 key 所存储的字符串值的长度7.2.1 Key操作操作 Redis常用字符串操作命令序号序号命令命令描述描述12mset key value key value.同时设置一个或多个 key-value 对13msetnx key value key value.同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在14psetex key millise
30、conds value这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位15incr key将 key 中存储的数字值增一16incrby key increment将 key 所存储的值加上给定的增量值(increment)17incrbyfloat key increment将 key 所存储的值加上给定的浮点增量值(increment)18decr key将 key 中存储的数字值减一19decrby key decrement将key 所存储的值减去给定的减量值(decrement)20append key value
31、如果 key 已经存在并且是一个字符串,APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾7.2.2 字符串字符串 一个对键一个对键ticketNumticketNum赋值、取值、自增、减少赋值、取值、自增、减少1010及删除该键的操作命令序列示例如下。及删除该键的操作命令序列示例如下。redisredis set set ticketNumticketNum 1000 1000OKOKredisredis get get ticketNumticketNum 1000 1000redisredis incrincr ticketNumticketNum (i
32、nteger)1001 (integer)1001 redisredis decrbydecrby ticketNumticketNum 10 10 (integer)991 (integer)991redisredis del del ticketNumticketNum (integer)1 (integer)124 List List类型是按照插入顺序排序的类型是按照插入顺序排序的字符串字符串双向双向链表链表。和数据结构。和数据结构中的普通链表一样中的普通链表一样,可以,可以在其头部在其头部(left)(left)和尾部和尾部(right)(right)添加新的元添加新的元素。在插入时,
33、如果该键并不存在,素。在插入时,如果该键并不存在,RedisRedis将为该键创建一个新将为该键创建一个新的链表的链表。i indexndex从从0 0开始,开始,-1-1表示最后一个。表示最后一个。1.赋值:赋值:LPUSH/RPUSH KEY V1 V2 VNLPUSHX/RPUSHX KEY VALUE2.取值:取值:LPOP/RPOP KEYLRANGE KEY START ENDGETBIT KEY OFFSET3.INDEX操作:操作:LSET key index valueLINDEX KEY index4.取长度:取长度:LLEN KEY5.截取截取:LTRIM key sta
34、rt stop 场景场景:LISTLIST可以作为消息队列,可以作为消息队列,LPUSHLPUSH链表头作为生产者链表头作为生产者插入消息,插入消息,RPOPRPOP作为消费者取得消息。作为消费者取得消息。7.2.3 列表列表7.2.3 列表列表 RedisRedis常用列表操作命令常用列表操作命令26序号序号命令命令描述描述1llen key 获取列表长度2lpop key 移出并获取列表的第一个元素3lpush key value1 value2 将一个或多个值插入列表头部4lpushx key value 将一个值插入已存在的列表头部5lrange key start stop 获取列表
35、指定范围内的元素6lrem key count value 移除列表元素7lset key index value 通过索引设置列表元素的值8ltrim key start stop 对一个列表进行修剪,就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除9rpop key 移除列表的最后一个元素,返回值为移除的元素7.2.3 列表列表27序号序号命令命令描述描述10rpoplpush source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回11rpush key value1 value2 在列表中添加一个或多个值12rpushx ke
36、y value 为已存在的列表添加值13blpop key1 key2 timeout 移出并获取列表的第一个元素,如果列表没有元素,则会阻塞列表直到等待超时或发现可弹出元素为止14brpop key1 key2 timeout 移出并获取列表的最后一个元素,如果列表没有元素,则会阻塞列表直到等待超时或发现可弹出元素为止15brpoplpush source destination timeout 从列表中弹出一个值,将弹出的元素插入另外一个列表中并返回它,如果列表没有元素,则会阻塞列表直到等待超时或发现可弹出元素为止16lindex key index 通过索引获取列表中的元素17linse
37、rt key before|after pivot value 在列表的元素前或者后插入元素 一个向列表结构键一个向列表结构键userlistuserlist左边插入左边插入8 8个元素、从右边弹出一个元素、从右边弹出一个元素、返回列表元素个数、按索引返回列表元素值、按个元素、返回列表元素个数、按索引返回列表元素值、按索引范围返回多个列表元素值的列表操作命令索引范围返回多个列表元素值的列表操作命令示例示例 redisredis lpushlpush userlistuserlist u100 u101 u103 u104 u105 u106 u107 u108 u100 u101 u103 u
38、104 u105 u106 u107 u108 (integer)8 (integer)8 redisredis rpoprpop userlistuserlist u100 u100 redisredis llenllen userlistuserlist (integer)7 (integer)7 redisredis lindexlindex userlistuserlist 6 6 u101u101287.2.3 列表列表 redisredis lindexlindex userlistuserlist 5 5 u103 u103 redisredis lindexlindex use
39、rlistuserlist 0 0 u108 u108 redisredis lrangelrange userlistuserlist 1 3 1 31)u1071)u1072)u1062)u1063)u1053)u105u108 u108 u107 u106 u105 u107 u106 u105 u104 u103 u101 u100u104 u103 u101 u100 可以可以将将SetSet类型类型看作没有看作没有排序的排序的字符字符串结构类型数据串结构类型数据 的的集合集合,和和ListList类型类型最大差别是最大差别是没有没有顺序顺序,另外注意,另外注意SetSet集合中不允
40、许出现集合中不允许出现重复的元素重复的元素,而且,而且SetSet支持支持多个多个SetsSets之间的之间的差、并、交集差、并、交集操作。操作。1.新增:新增:SADD KEY M1 M22.查询:查询:SMEMEBERS KEYSPOP KEYSRANDMEMBER KEY3.删除:删除:SREM KEY M1 M2MN4.取长:取长:SCARD KEY5.存在判定:存在判定:SISMEMBER KEY MEMBER6.聚合运算:聚合运算:SDIFF KEY1 KEY2 SINTER KEY1 KEY2 SUINON KEY1 KEY2场景:将符合标签的用户存放到场景:将符合标签的用户存放
41、到Set中,比如中,比如set1 存放存放V1的粉丝、的粉丝、set2存放存放V2的的粉丝、粉丝、set3存放存放V3的的粉丝,粉丝,那么同时是那么同时是V1和和V2的粉丝,但不是的粉丝,但不是V3的粉丝集合:的粉丝集合:1.SINTERSTORE aset set1 set2 2.SDIFF aset set3 7.2.4 集合集合7.2.4 集合集合 RedisRedis常用集合操作命令常用集合操作命令30序号序号命令命令描述描述1sadd key member1 member2 向集合添加一个或多个成员,表示内容可选2scard key 获取集合的成员数3sdiff key1 key2
42、返回给定所有集合的差集4sdiffstore destination key1 key2 返回给定所有集合的差集并存储在 destination 中5sinter key1 key2 返回给定所有集合的交集6sinterstore destination key1 key2 返回给定所有集合的交集并存储在 destination 中7sismember key member 判断 member 元素是否是集合 key 的成员8smembers key 返回集合中的所有成员9smove source destination member 将 member 元素从 source 集合移动到 des
43、tination 集合10spop key 移除并返回集合中的一个随机元素7.2.4 集合集合 RedisRedis常用集合操作常用集合操作命令命令 假设假设集合集合类型类型键键myfansmyfans与与yourfansyourfans分别用来存储各自的粉丝用分别用来存储各自的粉丝用户集合,向户集合,向myfansmyfans与与yourfansyourfans添加元素、删除指定元素、查询添加元素、删除指定元素、查询集合所有元素、判断某元素是否存在的命令集合所有元素、判断某元素是否存在的命令示例示例redisredis saddsadd myfansmyfans f1 f2 f3 f4 f1
44、 f2 f3 f4 f6 f8f6 f8 f12f12 (integer)7 (integer)7redisredis saddsadd yourfansyourfans f5 f5 f6 f8 f6 f8 f10 f11 f10 f11 f12f12 f18 f21 f18 f21 (integer)(integer)8 831序号序号命令命令描述描述11srandmember key count 返回集合中一个或多个随机数12srem key member1 member2 移除集合中一个或多个成员13sunion key1 key2 返回所有给定集合的并集7.2.4 集合集合 命令示例命
45、令示例redisredis sremsrem myfansmyfans f6 f6 (integer)1 (integer)1redisredis smemberssmembers myfansmyfans1)f31)f32)f12)f13)f123)f124)f84)f85)f25)f26)6)f4”f4”redissismember myfans f5redissismember myfans f5(integer)(integer)0 0redisredis sunionsunion yourfansyourfans myfansmyfans32redisredis sdiffsdiff
46、 myfansmyfans yourfansyourfans1)f31)f32)f42)f43)f23)f24)f14)f1redisredis sdiffsdiff yourfansyourfans myfansmyfans1)f51)f52)2)f6 f6 3)f183)f184)f214)f215)f115)f116)f10 6)f10 redisredis sinter sinter yourfansyourfans myfansmyfans1)f121)f122)f82)f8 可以可以将将RedisRedis中的中的HashesHashes类型看成具有类型看成具有String Key
47、String Key和和String ValueString Value的的mapmap容器。容器。所以该类型非常适合于存储值对象的信息。所以该类型非常适合于存储值对象的信息。1.赋值:赋值:HSET KEY FILED VALUE HMSET KEY FILED VALUE FILED1 VALUE12.取值:取值:HGET KEYHMGET KEY FIELD FIELD.HKEYS KEYHVALS KEYHGETALL KEY3.删除:删除:HDEL FILED FILED4.取长度:取长度:HLEN5.存在判定:存在判定:HEXISTS key filed 场景:用户画像属性标签场景
48、:用户画像属性标签信息使用信息使用HASHMAPHASHMAP存储,存储结构存储,存储结构为为user:phoneuser:phone tag1 val1 tag2 val2 tag1 val1 tag2 val2,不同联系电话号码可通过,不同联系电话号码可通过HGET HGET user:phone tag1 tag2 user:phone tag1 tag2 取出一个用户家庭、办公等不同标签取出一个用户家庭、办公等不同标签值。值。7.2.5 散散列列7.2.5 散散列列 RedisRedis常用散列操作命令常用散列操作命令34序号序号命令命令描述描述1hexists key field 查
49、看哈希表 key 中,指定的字段是否存在。返回0表示不存在,1表示存在2hset key field value 将哈希表 key 中的字段 field 的值设为 value3hsetnx key field value 只有在字段 field 不存在时,设置哈希表字段的值4hmset key field1 value1 field2 value2 同时将多个 field-value(域-值)对设置到哈希表 key 中5hlen key 获取哈希表中字段的数量6hkeys key 获取所有哈希表中的字段7hmget key field1 field2 获取所有给定字段的值8hdel key f
50、ield1 field2 删除一个或多个哈希表字段9hget key field 获取存储在哈希表中指定字段的值10hgetall key 获取在哈希表中指定 key 的所有字段和值11hvals key 获取哈希表中的所有值7.2.5 散散列列 RedisRedis常用散列操作常用散列操作命令命令 向向HashHash结构键结构键orderorder中添加一个元素、同时添加多个元中添加一个元素、同时添加多个元素、查看所有元素取值的操作素、查看所有元素取值的操作示例示例redisredis hsethset order order telnumtelnum 13301122123 133011
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。