Redis数据结构学习

Posted VVII

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis数据结构学习相关的知识,希望对你有一定的参考价值。

Redis 6大数据结构学习

数据类型 描述 备注
string 类似于Map<string,Object>,已key-val形式存储,默认会覆盖存在的key对应的value,A String value can be at max 512 Megabytes in length key value
list linked List,按照插入顺序排序,无论数据多大,头插尾插效率一样,但是查询较慢,集合的最大长度2的32次方-1 key value [value ...]
set string的无序不重复集合,集合的最大长度2的32次方-1,可以做交集,并集,查集操作 key member [member ...]
hash 类似于Map<string,Map<string,Object>>,集合中可有最大k-v键值对个数为2的32次方-1 key field value [field value ...]
zset 具有hash与set的特性,有序不重复,排序先对比score后对比member,score可重复,但是member是不重复的 key score member [score member ...]
stream https://redis.io/topics/streams-intro

string

TODO 命令 用法 描述 其它
单个 set set key value [EX seconds 或 PX milliseconds] [NX或XX] 设置值
setex setex key seconds value 同set key value EX seconds
setnx setnx key value 同set key value NX
单个 get get key 获取值
随机访问 getrange getrange key start end 下标从0开始,包含start,end,负数表示倒数第几位
setrange setrange key offset value 下标从0开始,包含start
批量 mset mset key value [key value ...]
批量 mget mget key [key ...] 返回数组
加1 incr incr key value需为integer类型
减1 decr decr key value需为integer类型
加N incrby incrby key decrement value需为integer类型,increase(增加)
减N decrby decrby key decrement value需为integer类型 ,decrease (减少)
追加 append append key value 存在追加,不存在则新建,返回追加后的长度
设置超时时间 expire expire key seconds
设置超时时间 pexpire pexpire key milliseconds
解除超时时间 persist persist k 给未设置超时时间的key设置则返回0,否则1
查询剩余存活时间 ttl ttl key 按秒
查询剩余存活时间 pttl pttl key 按毫秒

详解string 中的set命令

    组 键 值 [EX秒|PX毫秒] [NX|XX] [KEEPTTL] 
  • [EX秒|PX毫秒] 设置超时时间
  • [NX|XX] 设置覆盖规则 NX,当key存在则不覆盖,XX若key存在则覆盖
  • 6.0:添加了该KEEPTTL选项

eg:
设置了k的值为v,超时时间为60秒
NX 当k不存在时才会执行成功,所以返回nil
XX 当k存在时覆盖,结果返回成功,而且超时时间也会覆盖掉



List(Linked Lists)

TODO 命令 用法 描述 其它
添加 rpush rpush key value [value ...] 在左侧(在头部)插入,返回长度
lpush rpush key value [value ...] 在右侧(在尾部)插入,返回长度
lpushx lpushx key value 当key存在则在头部插入元素,返回长度,不存在则插入失败
rpushx rpushx key value 当key存在则在尾部插入元素,返回长度,不存在则插入失败
查询 lrange lrange key start stop 下标从0开始,包含start,end,负数表示倒数第几位
删除 lpop lpop key 从头部检索元素并删除元素,若列表为空则返回nil,否则返回删除的元素
rpop rpop key 从头部检索元素并删除元素,若列表为空则返回nil,否则返回删除的元素
删除 ltrim ltrim key start stop 下标从0开始,包含start,end,负数表示倒数第n下标,范围外的元素将被删除
blpop blpop key [key ...] timeout 从头部检索元素并删除元素,若列表在时间内为空则返回nil,否则返回键的名称,元素的值
brpop brpop key [key ...] timeout 从尾部检索元素并删除元素,若列表在时间内为空则返回nil,否则返回键的名称,元素的值
llen llen key 长度
lindex lindex key index 返回指定下标的元素值,下标从0开始
LINSERT LINSERT key BEFORE或AFTER pivot value 在指定元素之前或后面添加元素
lrem lrem key count value 删除指定范围内的指定元素,范围count=0时全链表,count>0,count到尾部,count<0,从尾部到倒数第-count
lset lset key index value 重置指定下标的元素值
rpoplpush rpoplpush source destination 以rpop形式弹出source元素,以lpush形式添加到destination
brpoplpush brpoplpush source destination timeout 比上面多了一个等待的超时时间

hash

  • 类似于 Map<String,Map<String,object>>
TODO 命令 用法 描述 其它
hset hget key field
hmset hmset key field value [field value ...]
hsetnx hsetnx key field value 当key不存在才加入成功
hget hget key field
hmget hmget key field [field ...]
hscan hscan key cursor [MATCH pattern] [COUNT count] 迭代hash
hgetall hgetall key 获取所有的域及值
hkeys hkeys key
hvals hvals key
hdel hdel key field [field ...]
hexists hexists key field
hincrby hincrby key field increment key中field的值增加incremen,incremen可为负数,但只能是整数
hincrbyfloat hincrbyfloat key field incremen 同上,incremen可为浮点数
hstrlen hstrlen key field 获取指定key中域的值的长度

Sets

  • 无序,不重复
TODO 命令 用法 描述 其它
sadd sadd key member [member ...]
scard scard key 返回元素个数
sdiff sdiff key [key ...] 返回第一个集合与其他集合不同的元素
sdiffstore sdiffstore destination key [key ...] 将不同元素储存在destination中
sinter sinter key [key ...] 返回所有集合的交集
sinterstore sinterstore destination key [key ...] 将交集存储在集合destination中
sunion sunion key [key ...] 并集
sunionstore sunionstore destination key [key ...] 将得到的并集存在集合destination
smembers smembers key 返回集合全部元素
sismembers sismembers key 返回是否集合元素
smove smove source destination member 将集合source中的元素member移动到集合destination
spop spop key [count] 从集合key中随机移除count个元素
srandmember srandmember key [count] count为正数,随机返回元素不重复,负数元素会重复,返回个数是count的绝对值,默认为1,不会改变原集合
srem srem key member [member ...] 删除指定元素
sadd setnm:tags 1 给集合添加标签
smembers setnm:tags 查询集合的标签

ZSET

  • 有序且不重复集合
TODO 命令 用法 描述 其它
zadd zadd key [NX或XX] [CH] [INCR] score member [score member ...]
zcard zcard key 返回元素个数
zcount zcount key min max 返回score在min max范围内的,包含上下限
zincrby zincrby key increment member 通过member给score增加increment,increment可为负数
zinterstore zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM或MIN或MAX]
zunionstore zunionstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM或MIN或MAX]
zlexcount zlexcount key min max
zpopmax
zpopmin
zrange zrange key start stop [WITHSCORES] 下标从0开始,-1表示倒数最后一个……
zrevrange zrevrange key start stop [WITHSCORES]
zrangebylex zrangebylex key min max [LIMIT offset count] **
zrangebyscore zrangebyscore key min max [WITHSCORES] [LIMIT offset count] **
zrevrangebylex zrevrangebylex key max min [LIMIT offset count]
zrevrangebyscore zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
zrank zrank key member 下标从零开始
zrevrank zrevrank key member 同上,返回倒数
zrem zrem key member [member ...]
zremrangebylex zremrangebylex key min max
zremrangebyscore zremrangebyscore key min max
zremrangebyrank zremrangebyrank key start stop
zscore zscore key member 返回对应的score
zscan key cursor [MATCH pattern] [COUNT count]

key操作

TODO 命令 用法 描述 其它
exists key 是否存在
type key 返回类型
del key 删除
keys * 查询所有key

当然还有其他高级的数据类型,请移步官网,自主学习总结,如理解有误,烦请大牛赐教,感谢感谢
个人愚见:感觉只看不如敲命令行,稍作理解

以上是关于Redis数据结构学习的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段

python 机器学习有用的代码片段

redis数据库在linux上的学习

学习笔记:python3,代码片段(2017)

redis存储session配制方法