【Redis】 ---- 数据结构常用命令

一. 目录

1. 字符串

2. 哈希

3. 链表

4. 集合

5. 有序集合

6. 基数

1.字符串

命令说明
set key value设置键值对
get key通过键获取值
del key通过key,删除键值对
strlen key求key指向字符串的长度
getset key value修改原来key的对应值,并将旧值返回
getrange key start end获取子串
append key value将新的字符串value,加入到原来key指向的字符串末

2.哈希

在redis中,hash是一个String类型得field和valued的映射表

例子
角色有3个字段:编号(id)、角色名称(roleName)和备注(note)
角色hash结构
在这里插入图片描述
在这里插入图片描述

命令说明
hdel key field1 [field2…]删除hash结构的某个(些)字段
hexists key field判断hash结构是否存在field字段
hgetall key获取所有hash结构中的键值
hincrby key field increment指定给hash结构中的某一字段加上一个整数(要求存储的是整数型字符串)
hincrbyfloat key field increment指定给hash结构中的某一字段加上一个浮点数
hkeys key返回hash中所有的键
hlen key返回hash键值对的数量
hmget key field1[field2]返回hash中指定的键的值,可以是多个
hmset key field1 value1 [field2 value2]hash结构中设置多个键值对
hset key field value在hash结构中设置键值对
hsetnx key field value在hash结构中不存在对应的键,才设置值
hvals key获取hash结构中所有的值

注意: 如果哈希结构是个很大的键值对, hkeys、hgetall、hvals等返回所有哈希结构数据的命令,会造成大量数据的读取,要考虑性能和读取数据大小对JVM内存的影响

3.链表(linked-list)

优势:插入和删除的遍历,因为链表节点是分配在不同的内存区域的,并不连续,只是根据上一个节点保存下一个节点的顺序来索引而已,无需移动元素。

命令说明
lpush key node1 [node2]…把节点node1加入到链表最左边
rpush key node1 [node2]…把节点node1加入到链表的最右边
lindex key index读取下标为index的节点
llen key求链表的长度
lpop key删除左边第一个节点,并将其返回
rpop key删除右边第一个节点,并将其返回
linsert key before或after pivot node插入一个节点node,并且可以指定在值为pivot的节点的前面(before)或者后面(after)
lpushx list node如果存在key为list的链表,则插入节点node
rpushx list node如果存在key为list的链表,则插入节点node
lrange list start end获取链表list从start下标到end下标的节点值
lrem list count value如果count为0,则删除所有值为value的节点;如果count不是0,则先对count取绝对值,删除不大于绝对值个等于value节点
lset key index node设置列表下标为index的节点的值为node
ltrim key start stop修剪链表,只保留从start到stop的区间的节点,其余的都删除掉

4.集合

Redis的集合不是一个线性结构,而是一个哈希表结构
插入、删除和查找的时间复杂度都是O(1),注意一下三点:

  • 集合中的每一个元素都是不能重复的,当插入相同记录的时候都会失败
  • 集合是无序的
  • 集合的每一个元素都是String数据结构类型
命令说明
sadd key member1[member2 member3 …]给键为key的集合增加成员
scard key统计键为key的集合成员数
sdiff key1 [key2]找出两个集合的差集
sdiffstore des key1 [key2]先找出key1和key2的差集,然后保存在des集合中
sinter key1 [key2]求key1和key2两个集合的交集
sinterstore des key1 key2先按sinter命令的规则,找出key1和key2两个集合的交集,然后保存到des中
sismember key member判断member是否键为key的集合的成员
smembers key返回集合所有成员
smove src des member将成员member从集合src迁移到集合des中
spop key随机弹出集合的一个元素
srandmember key [count]随机返回集合中一个或者多个元素,count为限制返回总数
srem key member1 [member2…]移除集合中的元素,可以是多个元素
sunion key1 [key2]求两个集合的并集
sunionstore des key1 key2先求key1和key2并集后保存到des集合中

5.有序集合

有序集合是依赖key标识它是属于哪个集合,依赖分数进行排序,所以值和分数是必须的。
在这里插入图片描述

命令说明
zadd key score1 value1 [score2 value2 …]向有序集合的key,增加一个或者多个成员
zcard key获取有序集合的成员数
zcount key min max根据分数返回对应的成员列表
zincrby key increment member给有序集合成员值为member的分数增加increment
zinterstore desKey numkeys key1 [key2 key3…]求多个有序集合的交集,并且将结果保留到desKey中
zlencount key min max求有序集合key成员值在min和max的范围
zrange key start stop [withscores]按照分数的大小(从小到大)返回成员
zrank key member按从小到大有序集合的排行
zrangebylex key min max[limit offset count]根据值的大小,从小到大排序
zrangebyscore key min max [withscores] [limit offset count ]根据分数大小,从小到大求取值范围
zremrangebyscore key start stop根据分数区间进行删除
zremrangebyrank key start stop根据分数排行从小到大的排序删除,从0开始计算
zremrangebylex key min max按照值的分布进行删除
zrevrange key start stop [withscores]从大到小的按分数排序(按下标)
zrevrangebyscore key max min [withscores]从大到小的按分许排序(按分数)
zrevrank key member按从大到小的顺序,求元素的排行
zscore key member返回成员的分数值

6.基数 -- HyperLogLog

基数是一种算法,并不存储元素

命令说明
pfadd key element添加指定元素到HyperLogLog中
pfcount key返回HyperLogLog的基数值
pfmerge desKey key1[key2 key3…]合并多个HyperLogLog,并将其保存在desKey
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值