Redis数据结构使用整理

阅读: 评论:0

Redis数据结构使用整理

Redis数据结构使用整理

Redis数据结构使用整理

  • Redis是什么?
    • 实例
      • 1.字符串
      • 2.哈希
      • 3.列表
      • 4.Set 集合
      • 5.zset(sorted set:有序集合)

Redis是什么?

是一个可以存储key-value形式的存储数据库,并且提供了多种语言的Api。他通常被称为数据结构服务器,因为(value)值可以是:字符串(String),哈希(Hash),列表(list), 集合(sets)和有序集合(sorted sets)等类型

实例

1.字符串

数据结构: key => value 一个键对应一个值,String是二进制安全的,可以包含任何类型的数据;
方法命令:set、get、incr、incrby、decr

redis 127.0.0.1:6379> set name zhangsan
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> set counter 2
OK
redis 127.0.0.1:6379> get counter
"2"
redis 127.0.0.1:6379> incr counter
(integer) 3
redis 127.0.0.1:6379> get counter
"3"
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"

2.哈希

是一个Mapmap这种数据结构类型:如 value={{field1,value1},…fieldN,valueN}},比较适合存储对象
方法命令:hmset、hget、del、hgetall

redis 127.0.0.1:6379> HMSET name field1 "zhangsan" field2 "lisi"
OK
redis 127.0.0.1:6379> HGET name field1
"zhangsan"
redis 127.0.0.1:6379> HGET name field2
"lisi"

如果在获取前将name删掉,我们再获取,他将会返回(nil),下面是代码:

redis 127.0.0.1:6379> del name
(integer) 1
redis 127.0.0.1:6379> HGET name field1
(nil)

也可以通过hgetall name获取所有数据

redis 127.0.0.1:6379> HMSET name field1 "zhangsan" field2 "lisi"
OK
redis 127.0.0.1:6379> hgetall name
1) "field1"
2) "zhangsan"
3) "field2"
4) "lisi"

3.列表

列表(List)就是一个有序的,并且value值可重复的链表形式。通过下标获取数据,左右两边都可以加入数据。其中-1表示获取全部。
使用列表的技巧

  • lpush+lpop=Stack(栈)
  • lpush+rpop=Queue(队列)
  • lpush+ltrim=Capped Collection(有限集合)
  • lpush+brpop=Message Queue(消息队列)
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"

4.Set 集合

集合也是保存多个值的容器,但是和列表不同的是,集合是无序的,value不能有重复值,不能通过索引获取值,可以获取集合间的并集、交集、差集
使用命令: sset 、srem、scard、smembers、sismember

127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> SMEMBERS myset
1) "xiaohao"
2) "hao1"
3) "hao"
127.0.0.1:6379> SISMEMBER myset hao
(integer) 1
127.0.0.1:6379> sadd myset a
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "xiaohao"
2) "a"
3) "hao1"
4) "hao"

5.zset(sorted set:有序集合)

有序集合会给每个成员给个分数,根据分数进行排序。有序集合的值不可以重复,但是他的分数可以重复;
使用命令: zadd 、 zrange、 zscore

127.0.0.1:6379> zadd zset 0 redis
(integer) 1
127.0.0.1:6379> zadd zset 100 mongodb
(integer) 1
127.0.0.1:6379> zadd zset 101 rabbitmq
(integer) 1
127.0.0.1:6379> zadd zset 101 rabbitmq
(integer) 0
127.0.0.1:6379> zrangebyscore zset 0 10000
1) "redis"
2) "mongodb"
3) "rabbitmq"

由此可见,插入相同的值并不会新增值。

本文发布于:2024-02-02 19:48:43,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170687452146043.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据结构   Redis
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23