3

Redis数据结构及常用命令

 2 years ago
source link: https://maoqiankun97.github.io/posts/redis/redis%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%8F%8A%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Redis数据结构及常用命令

1. 字符串(string)

1.1 常用命令

1.1.1 设置值

set key value [ex seconds] [px milliseconds] [nx|xx]

ex seconds: 为键设置秒级过期时间 px milliseconds: 为键设置毫秒级过期时间 nx: 键必须不存在才可以设置成功 xx: 键必须不存在才可以设置成功 除了set redis还提供了setex和setnx两个命令: setex key seconds value setnx key value

1.1.2 获取值

get key

1.1.3 批量设置值

mset key value [key value …]

1.1.4 批量获取值

mget key [key …]

1.2 不常用命令

1.2.1 追加值

append key value

1.2.2 字符串长度

strlen key

1.2.3 设置并返回原值

getset key value

1.2.4 设置指定位置的字符串

setrange key offset value

offset是需要设置值的index

1.2.5 获取部分字符串

getrange key start end

截取下标为[start, end]的字符串

1.3 内部编码

字符串类型的内部编码有三种

  • int - 8个字节的长整型
  • embstr - 小于等于39个字节的字符串
  • raw - 大于39个字节的字符串

2. 哈希(hash)

2.1 常用命令

2.1.1 设置值

hset key field value

2.1.2 获取值

hget key field

2.1.3 删除field

hdel key field [field …]

2.1.4 计算field个数

hlen key

2.1.5 批量设置或获取field-value

hmget key field [field …]

hmset key field value [field value …]

2.1.6 判断field是否存在

hexists key field

2.1.7 获取所有field

hkeys key

2.1.8 获取所有value

hvals key

2.1.9 获取所有的field-value

hgetall key

2.1.10 对field自增

hincrby key field

hincrbyfloat key field

2.1.11 计算value字符串长度

hstrlen key field

2.2 内部编码

  • ziplist - 当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)、同时所有值都小于hash-max-ziplist-value配置(默认64字节)时,redis使用ziplist作为hash的内部实现
  • hashtable - 当哈希类型无法满足ziplist条件时,redis使用hashtable作为hash的内部实现

3. 列表(list)

3.1 常用命令

3.1.1 添加操作

  • 从右边添加值 - rpush key value [value …]
  • 从左边添加值 - lpush key value [value …]
  • 向某个元素前或者后添加值 - linsert key before|after pivot value (linsert命令在列表中找到第一个等于pivot的元素, 在其前面或后面插入一个新的元素value)

3.1.2 查找操作

  • 获取指定范围内的元素列表 - lrange key start end (索引从左到右分别是0~N-1, 从右到左分别是-1~-N)
  • 获取指定下标的元素 - lindex key index
  • 获取列表长度 - llen key

3.1.3 删除操作

  • 从列表左侧弹出元素 - lpop key
  • 从列表右侧弹出元素 - rpop key
  • 删除指定元素 - lrem key count value (lrem命令会从列表中找到等于value的元素进行删除, count > 0时从右到左删除最多count个元素、count < 0 时从左到右删除最多-count个元素、count = 0 时删除所有)
  • 按索引范围裁剪列表 - ltrim key 1 3 (只会保留列表中下标[1, 3]的元素)

3.1.4 修改

lset key index newValue

3.1.5 阻塞操作

blpop key [key …] timeout

brpop key [key …] timeout

time单位为秒

3.2 内部编码

  • ziplist - 列表中的元素个数小于list-max-ziplist-entries配置、且列表中每个元素值都小于list-max-ziplist-value 配置, redis使用ziplist作为list的内部实现以减少内存使用
  • linkedlist - 当列表类型无法满足ziplist的条件时, redis使用linkedlist作为list的内部实现

4. 集合(set)

4.1 常用命令

4.1.1 添加元素

sadd key member [member…]

4.1.2 删除元素

srem key member [member…]

4.1.3 计算元素个数

scard key

4.1.4 判断元素是否在集合中

sismember key member

4.1.5 随机从集合中返回指定个数元素

srandmember key [count]

count默认为1

4.1.6 随机从集合中弹出元素

spop key

4.1.7 获取所有元素

smembers key

4.2 集合间操作

4.2.1 求交集

sinter key [key …]

4.2.2 求并集

sunion key [key …]

4.2.3 求差集

sdiff key0 [key1 …]

结果为key0 - key1 …

4.3 内部编码

  • intset(整数集合) - 当集合中的元素都是整数且元素个数小于set-max-intset-entries配置(默认512个)时,redis使用intset作为集合的内部实现
  • hashtable - 当集合类型无法满足intset的条件时,redis使用hashtable作为集合的内部实现

5. 有序集合(sorted set)

5.1 命令

5.1.1 添加

zadd key score member [score member …]

5.1.2 计算成员个数

zcard key

5.1.3 计算某个成员的分数

zscore key member

5.1.4 计算成员的排名

zrank key member

zrevrank key member

5.1.5 删除成员

zrem key member [member …]

5.1.6 增加成员的分数

zincrby key increment member

increment指增加多少分数

5.1.7 返回指定排名范围的成员

zrange key start end [withscores]

zrevrange key start end [withscores]

5.1.8 返回指定分数范围的成员

zrangebyscore key min max [withscores] [limit offset count]

zrevrangebyscore key max min [withscores] [limit offset count]

5.1.9 返回指定分数范围成员个数

zcount key min max

5.1.10 删除指定排名内的升序元素

zremrangebyrank key start end

5.1.11 删除指定分数范围的成员

zremrangebyscore key min max

5.2 集合间的操作

5.2.1 求交集

zinterstore destination numkeys key [key …] [weights weight [weight …]] [aggregate sum|min|max]

  • destination:交集计算结果保存到这个键
  • numkeys:需要做交集计算键的个数
  • key [key …]: 需要做交集计算的键
  • weights weight [weight …]:每个键的权重,在做交集计算时,每个键中的每个member会将自己的分数乘以这个权重,每个键的权重默认为1
  • aggregate sum|min|max:计算成员交集后,分值可以按照sum、min、max做汇总,默认为sum

5.2.2 求并集

zunionstore destination numkeys key [key …] [weights weight [weight …]] [aggregate sum|min|max]


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK