更新时间:2022-09-09 23:06:05
今天学习内容Redis五大数据类型,开练~~~
一、准备工作,起服务
二、Redis五大数据类型
2.1 String类型
赋值:SET
SET key(索引) value(对应的值)
获取指定内容:GET
GET key(要获取的值对应的索引)
获取指定键的字串:GETRANGE
GETRANGE key(索引) start(起始下标) end(终止下标)
获取多个键值:MGET
MGET key1 [key2...]
获取指定键值长度:STRLEN
STRLEN key
设置多个键值:MSET
MSET key1 value1 [key2 value2 ...]
仅在key不存在的情况下才能设置:MSETNX
MSETNX key1 value1 [key2 value2 ...]
数值内容加1:INCR
INCR key
数值内容加N:INCRBY
INCRBY key increment
数值内容减1:DECR
DECR key
数值内容减N:DECRBY
DECRBY key increment
字符串内容追加:APPEND
APPEND key value(如果key不存在,直接追加,会直接创建)
2.2 Hash类型
设置HASH数据:HMSET
HMSET key fieId1 value1 [fieId2 value2...]
获取指定哈希表中所有的字段和值:HGETALL
HGETALL key
获取存储在哈希表中指定字段的值:HGET
HGET key field
删除一个或多个哈希表字段:HDEL
HDEL key field1 [field2...]
获取哈希表中字段的数量:HLEN
HLEN key
获取哈希表中的所有字段:HKEYS
HKEYS key
获取哈希表中所有的值:HVALS
HVALS key
2.3 List类型(可以把它看作是一个LinkedList结构,按照插入的顺序进行排序)
将一个或多个元素插入列表表头:LPUSH
LPUSH key value1 [value2...]
将一个或多个元素插入列表尾部:RPUSH
RPUSH key value1 [value2...]
获取列表长度:LLEN
LLEN key
通过索引获取列表中的元素:LINDEX
LINDEX key index
移除并获取列表第一个元素:LPOP
LPOP key
移除并获取列表最后一个元素:RPOP
RPOP key
2.4 Set类型(无序集合,且集合中的元素是唯一)
向集合中添加一个或多个成员:SADD
SADD key member1 [member2...]
获取集合中成员的个数:SCARD
SCARD key
返回第一个集合与其他集合之间的差异:SDIFF
SDIFF key1 [key2..]
返回所给定所有集合的交集:SINTER
SINTER key1 [key2...]
返回集合中的所有元素:SMEMBERS
SMEMBERS key
2.5 ZSet类型(有序集合,且集合中的元素是唯一)
向有序集合中添加一个或多个成员:ZADD
ZADD key score1(插入成员的分数) member1 [score2 member2...]
获取有序集合的成员数:ZCARD
ZCARD key
计算有序集合中指定区间分数的成员数:ZCOUNT
ZCOUNT key min max
根据分数返回有序集合指定区间内的成员:ZRANGEBYSCORE
ZRANGEBYSCORE key min max [WITHSCORES]
移除有序集合中的一个或多个元素:ZREM
ZREM key member1 [member2...]
这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。我上几期的内容教学,都是使用的String字符串。
这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为key,设置30分钟为缓存过期时间,能很好的模拟出类似session的效果。
使用List的数据结构,可以做简单的消息队列的功能。另外还有一个就是,可以利用lrange命令,做基于redis的分页功能,性能极佳,用户体验好。
因为set堆放的是一堆不重复值的集合。所以可以做全局去重的功能。为什么不用JVM自带的Set进行去重?因为我们的系统一般都是集群部署,使用JVM自带的Set,比较麻烦,难道为了一个做一个全局去重,再起一个公共服务,太麻烦了。 另外,就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。
sorted set多了一个权重参数score,集合中的元素能够按score进行排列。可以做排行榜应用,取TOP N操作。