redis的五种基础数据结构和命令操作

举报
共饮一杯无 发表于 2022/10/10 09:22:30 2022/10/10
【摘要】 redis的数据结构redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构。value的数据结构:字符串类型 string哈希类型 hash : map格式列表类型 list : linkedlist格式。支持重复元素集合类型 set ?: 不允许重复元素有序集合类型 sortedset:不允许重复元素,且元素有顺序 字符串类型 string...

redis的数据结构

redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构。
value的数据结构:

  1. 字符串类型 string
  2. 哈希类型 hash : map格式
  3. 列表类型 list : linkedlist格式。支持重复元素
  4. 集合类型 set ?: 不允许重复元素
  5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序

字符串类型 string

  1. 存储set key value
127.0.0.1:6379> set username zhanjq
OK
  1. 获取get key
127.0.0.1:6379> get username
"zhanjq"
  1. 删除del key
127.0.0.1:6379> del username
(integer) 1

哈希类型 hash

  1. 存储: hset key field value
127.0.0.1:6379> hset myhash username zhanjq
(integer) 1
127.0.0.1:6379> hset myhash password 123
(integer) 1 
  1. 获取

hget key field: 获取指定的field对应的值

hgetall key:获取所有的field和value

127.0.0.1:6379> hgetall myhash
1) "username"
2) "zhanjq"
3) "password"
4) "123456"
  1. 删除hdel key field
127.0.0.1:6379> hdel myhash username
(integer) 1 

列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)

  1. 添加
  • lpush key value: 将元素加入列表左表
  • rpush key value:将元素加入列表右边
127.0.0.1:6379> lpush myList b
(integer) 1
127.0.0.1:6379> lpush myList a
(integer) 2
127.0.0.1:6379> rpush myList c
(integer) 3
  1. 获取
    lrange key start end :范围获取
127.0.0.1:6379> lrange myList 0 -1
1) "a"
2) "b"
3) "c"
  1. 删除
    lpop key: 删除列表最左边的元素,并将元素返回
    rpop key: 删除列表最右边的元素,并将元素返回
127.0.0.1:6379> lpop myList
"a"

集合类型 set : 不允许重复元素

  1. 存储sadd key value
127.0.0.1:6379> sadd myset a b c
(integer) 3
127.0.0.1:6379> sadd myset a
(integer) 0
  1. 获取smembers key:获取set集合中所有元素
127.0.0.1:6379> smembers myset
1) "c"
2) "a"
3) "b"
  1. 删除srem key value:删除set集合中的某个元素
127.0.0.1:6379> srem myset a
(integer) 1
127.0.0.1:6379> smembers myset
1) "c"
2) "b"

有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

  1. 存储zadd key score value
127.0.0.1:6379> zadd mysort 60 zhangsan
(integer) 1
127.0.0.1:6379> zadd mysort 50 lisi
(integer) 1
127.0.0.1:6379> zadd mysort 80 wangwu
(integer) 1
  1. 获取

zrange key start end [withscores]:按分数从小到大排序
:0表示第一个元素,-1表示最后一个元素,-2表示倒数第二个元素,以此类推

127.0.0.1:6379> zrange mysort 0 -1
1) "lisi"
2) "zhangsan"
3) "wangwu"

127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "lisi"
2) "50"
3) "zhangsan"
4) "60"
5) "wangwu"
6) "80"

zrevrange key start end:按分数从大到小排序,可以获取排名前多少的数据。

127.0.0.1:6379> zrevrange mysort 0 -1
1) "wangwu"
2) "zhangsan"
3) "lisi"

zrank key k: 返回值k在集合key中排第几位,是按照v由小到大的顺序。排第一名返回0,第二返回1,以此类推。
zrevrank key k :同上,不同的是,按照k由大到小的顺序。

127.0.0.1:6379> zrank mysort lisi
(integer) 0
127.0.0.1:6379> zrevrank mysort lisi
(integer) 2

zcard:返回集合中元素的个数。

127.0.0.1:6379> zcard mysort
(integer) 3

zscore key k:取出集合key中键为k对应的值v。

127.0.0.1:6379> zscore mysort zhangsan
"60"
  1. 更新zincrby key num k:给集合key中的元素k加上num,值针对整型。

比如 zincrby mysort 30 zhangsan,给id为zhangsan的加上30个数量。此时zscore mysort zhangsan的结果是60+30为90。

127.0.0.1:6379> zincrby mysort 30 zhangsan
"90"
127.0.0.1:6379> zscore mysort zhangsan
"90"
  1. 删除zrem key k:删除集合中指定元素。
127.0.0.1:6379> zrem mysort zhangsan
(integer) 1

通用命令

  1. keys *?: 查询所有的键
  2. type key : 获取键对应的value的类型
127.0.0.1:6379> type username
string
127.0.0.1:6379> type myhash
hash
127.0.0.1:6379> type myList
list
127.0.0.1:6379> type myset
set
127.0.0.1:6379> type mysort
zset
  1. del key:删除指定的key value
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。