Redis03:Redis五大数据类型

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

官网命令大全

http://www.redis.cn/commands.html

1、RedisKey

   (1)redis允许模糊查询key  有3个通配符  *、?、[]

  (2)randomkey:返回随机key  

  (3)type key:返回key存储的类型

  (4)exists key:判断某个key是否存在

  (5)del key:删除key

  (6)rename key newkey:改名

  (7)renamenx key newkey:如果newkey不存在则修改成功

  (8)move key 1:将key移动到1数据库

  (9)ttl key:查询key的生命周期(秒)

  (10)expire key 整数值:设置key的生命周期以秒为单位

  (11)pexpire key 整数值:设置key的生命周期以毫秒为单位

  (12)pttl key:查询key 的生命周期(毫秒)

  (13)perisist key:把指定key设置为永久有效

2、String(字符串)

下表列出了常用的 redis 字符串命令:

序号命令及描述
1SET key value 设置指定 key 的值
2GET key 获取指定 key 的值
3GETRANGE key start end 返回 key 中字符串值的子字符 【) GETRANGE key 0 -1 获取全部字符串=getKey
4GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
5GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
6MGET 获取所有(一个或多个)给定 key 的值。mget k1 k2 k3
7SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
8SETEX (set with expire) 设置过期时间
9SETNX (SET if Not eXists) 只有在 key 不存在时设置 key 的值。
10SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。替换指定位置开始字符串
11STRLEN key 返回 key 所储存的字符串值的长度。string length
12MSET 同时设置一个或多个 key-value 对。mset k1 v1 k2 v2 k3 v3
13MSETNX key value [key value …] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
14PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
15INCR key 将 key 中储存的数字值增一。 自增1
16INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。自增n eg:incrby 10
17INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。
18DECR key 将 key 中储存的数字值减一。 自减1
19DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。自减1 eg:decrby 10
20APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果key不存在,相当于是set key value

1、SET key value 设置指定 key 的值

//设置用户1 为json字符串
set user:1 {name:pidan,age:10}

//获取用户1 的信息
get user:1

2、GET key 获取指定 key 的值

在这里插入图片描述

3、MSET 同时设置一个或多个 key-value 对

//批量设置用户的 姓名和年龄
mset user:2:name danzi user:2:age 10

//批量获取用户2 的信息
mget user:2:name user:2:age

在这里插入图片描述
在这里插入图片描述

4、阅读量案例

在这里插入图片描述
在这里插入图片描述

5、 SETNX (SET if Not eXists) 只有在 key 不存在时设置 key 的值

在这里插入图片描述

6、SETXX ,只有在 key 存在时才可修改 key 的值

在这里插入图片描述

7、APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果key不存在,相当于是set key value

在这里插入图片描述

8、GETRANGE key start end 返回 key 中字符串值的子字符

在这里插入图片描述
在这里插入图片描述

9、SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。替换指定位置开始字符串

在这里插入图片描述

10、strlen key,查看指定键的值的长度

在这里插入图片描述

11、type key 查看指定键的值的类型,值的类型共5种

在这里插入图片描述

12、GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)

在这里插入图片描述

13、help set 查询set命令

在这里插入图片描述

14、incr 、incrby、incrbyfloat 自增 1或n

在这里插入图片描述

15、decr、decrby 自减 1或n

在这里插入图片描述

16、object 查看类型

在这里插入图片描述

扩展:二进制安全

1、编码格式不同,汉字占的字节数不同

在这里插入图片描述

bitMap 知识点

二进制中1byte 有 8bit

命令1:setbit k1 1 1
在这里插入图片描述
在这里插入图片描述
命令分析:

setbit 命令
k1:键
第1个1:偏移量,下标从0开始计算,1代表第2个bit位
第2个1:value值设置为1 
1字节8位变为: 0100 0000
offset:是二进制位的偏移量

命令2:setbit k1 7 1

命令分析:
setbit 命令
k1:键
第1个1:偏移量,下标从0开始计算,7代表第8个bit位,还属于第1个字节内
第2个1:value值设置为1 
在原来的1字节8位的基础上,在第7个bit位设置了值为1
1字节8位变为: 0100 0001

16进制计算结果为41,根据ascii码查询得出,对应的16进制是大写A字母

注:redis 查询ascii码,查询命令:man ascii ,但需要Linux下安装Manual手册,才可以直接使用man ascii查看ASCII表

在这里插入图片描述
命令3:setbit k1 9 1
将键为k1的字节,下标从0开始计算,在下标为9,第10个bit位上,设置值为1
生成的2个字节的二进制位是:0100 0001 0100 0000
0100 0001 在ascii码中对应的16进制是 字母A
0100 0000 在ascii码中对应的16进制是 符号@

2、bitpos

在这里插入图片描述
2个字节的二进制位是:0100 0001 0100 0000

127.0.0.1:6379> BITPOS k1 1 0 0
(integer) 1
127.0.0.1:6379> BITPOS k1 1 1 1
(integer) 9
127.0.0.1:6379> BITPOS k1 1 0 1
(integer) 1
127.0.0.1:6379> 

命令分析:BITPOS k1 1 0 0

BITPOS:查询命令
k1:指定键
1:bit位上是1
第1个0:开始以下标为0,第,1个字节
第2个0:结束以下标为0,第,1个字节
在两个字节的16个bit位范围内查询 bit位上的值是1,且字节内第一个出现的位置
3、bitcount

做二进制位 1 的统计
在这里插入图片描述
在这里插入图片描述

4、bitop

在这里插入图片描述
目标key是结果
参与的key会触发二进制位的逻辑操作 与或非

案例演示:

127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> clear           #情况本数据库
127.0.0.1:6379> setbit k1 1 1   # 设置k1 下标为1,第2个bit位的值为1
(integer) 0                     # 0100 0000
127.0.0.1:6379> setbit k1 7 1   # 设置k1 下标为7,第8个bit位的值为1
(integer) 0                     # 0100 0001  
127.0.0.1:6379> get k1          # 16进制为 41,对应ascii码是 A
"A"                             
127.0.0.1:6379> setbit k2 1 1   # 设置k2 下标为1,第2个bit位的值为1
(integer) 0                     # 0100 0000
127.0.0.1:6379> setbit k2 6 1   # 设置k2 下标为6,第7个bit位的值为1
(integer) 0                     # 0100 0010  
127.0.0.1:6379> get k2          # 16进制为 42,对应ascii码是 B
"B"
127.0.0.1:6379> bitop and addkey k1 k2  # 计算 k1 和 k2 的 与运算
(integer) 1
127.0.0.1:6379> get addkey   # and是与运算
"@"
127.0.0.1:6379> bitop or orkey k1 k2   # 计算 k1 和 k2 的 或运算
(integer) 1                            
127.0.0.1:6379> get orkey
"C"
127.0.0.1:6379> 

什么是Jedis: 是Redis官方推荐的java连接开发工具!使用java操作Redis的中间件

3、List

shell命令查询list方法

127.0.0.1:6379> help @list  

  BLPOP key [key ...] timeout
  summary: Remove and get the first element in a list, or block until one is available
  since: 2.0.0

  BRPOP key [key ...] timeout
  summary: Remove and get the last element in a list, or block until one is available
  since: 2.0.0

  BRPOPLPUSH source destination timeout
  summary: Pop an element from a list, push it to another list and return it; or block until one is available
  since: 2.2.0

  LINDEX key index
  summary: Get an element from a list by its index
  since: 1.0.0

  LINSERT key BEFORE|AFTER pivot element
  summary: Insert an element before or after another element in a list
  since: 2.2.0

  LLEN key
  summary: Get the length of a list
  since: 1.0.0

  LPOP key
  summary: Remove and get the first element in a list
  since: 1.0.0

  LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
  summary: Return the index of matching elements on a list
  since: 6.0.6

  LPUSH key element [element ...]
  summary: Prepend one or multiple elements to a list
  since: 1.0.0

  LPUSHX key element [element ...]
  summary: Prepend an element to a list, only if the list exists
  since: 2.2.0

  LRANGE key start stop
  summary: Get a range of elements from a list
  since: 1.0.0

  LREM key count element
  summary: Remove elements from a list
  since: 1.0.0

  LSET key index element
  summary: Set the value of an element in a list by its index
  since: 1.0.0

  LTRIM key start stop
  summary: Trim a list to the specified range
  since: 1.0.0

  RPOP key
  summary: Remove and get the last element in a list
  since: 1.0.0

  RPOPLPUSH source destination
  summary: Remove the last element in a list, prepend it to another list and return it
  since: 1.2.0

  RPUSH key element [element ...]
  summary: Append one or multiple elements to a list
  since: 1.0.0

  RPUSHX key element [element ...]
  summary: Append an element to a list, only if the list exists
  since: 2.2.0

127.0.0.1:6379> 

注意:list 所有的命令都是以 L 开头的Redis不区分大小写

下表列出了列表相关的基本命令:可重复的

序号命令及描述
1BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
2BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
3BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
4LINDEX key index 通过索引获取列表中的元素
5LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
6LLEN key 获取列表长度
7LPOP key 移出并获取列表的第一个元素
8LPUSH key value1 [value2] 将一个或多个值插入到列表头部
9LPUSHX key value 将一个或多个值插入到已存在的列表头部
10LRANGE key start stop 获取列表指定范围内的元素
11LREM key count value 移除列表元素
12LSET key index value 通过索引设置列表元素的值
13LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
14RPOP key 移除并获取列表最后一个元素
15RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
16RPUSH key value1 [value2] 在列表中添加一个或多个值
17RPUSHX key value 为已存在的列表添加值

在list里面,可以把list玩成 队列(先进先出)、阻塞队列、栈(后进先出)

案例:

1、lpush key value 将1个或多个放入列表中,默认加在列表左边

在这里插入图片描述

2、获取列表全部的值

在这里插入图片描述

3、Rpush key value 将1个或多个放入列表中,默认加在列表右边

在这里插入图片描述

4、从列表中移除元素

Lpop:从左边移除
在这里插入图片描述
Rpop:从右边移除
在这里插入图片描述

5、Lindex 通过下标获取列表中指定的值,L 代表list

在这里插入图片描述

6、Llen 获取列表的长度

在这里插入图片描述

7、移除list中n个值中的指定的值,列表不去重

在这里插入图片描述
在这里插入图片描述

8、裁剪list中下标n到m的部分值,通过下标截取指定的长度

在这里插入图片描述

9、rpoplpush 移除列表中的最后一个元素,并将此值添加到新的列表中

在这里插入图片描述

10、更新列表中的某个值,所以这个列表必须先存在,不存在就报错,将列表中指定下标的值替换为另外一个值

在这里插入图片描述

11、在列表的某个值的之前或之后,插入某个值

在这里插入图片描述
在这里插入图片描述

12、lset k value

在这里插入图片描述

13、Blpop 命令

1、node1
在这里插入图片描述
2、node2
在这里插入图片描述
3、node3
在这里插入图片描述

14、LTRIM 命令

在这里插入图片描述

小结

实际上是一个链表,before Node after,left,right都可以插入值
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除了所有值,空链表,也代表不存在
在两边插入或者改动值,效率最高。中间元素,相对来说效率会低一点
消息队列(Lpush Rpop),栈(Lpush Lpop)

4、Set

注意:set 所有的命令都是以 S 开头的

127.0.0.1:6379> help @set

  SADD key member [member ...]
  summary: Add one or more members to a set
  since: 1.0.0

  SCARD key
  summary: Get the number of members in a set
  since: 1.0.0

  SDIFF key [key ...]
  summary: Subtract multiple sets
  since: 1.0.0

  SDIFFSTORE destination key [key ...]
  summary: Subtract multiple sets and store the resulting set in a key
  since: 1.0.0

  SINTER key [key ...]
  summary: Intersect multiple sets
  since: 1.0.0

  SINTERSTORE destination key [key ...]
  summary: Intersect multiple sets and store the resulting set in a key
  since: 1.0.0

  SISMEMBER key member
  summary: Determine if a given value is a member of a set
  since: 1.0.0

  SMEMBERS key
  summary: Get all the members in a set
  since: 1.0.0

  SMOVE source destination member
  summary: Move a member from one set to another
  since: 1.0.0

  SPOP key [count]
  summary: Remove and return one or multiple random members from a set
  since: 1.0.0

  SRANDMEMBER key [count]
  summary: Get one or multiple random members from a set
  since: 1.0.0

  SREM key member [member ...]
  summary: Remove one or more members from a set
  since: 1.0.0

  SSCAN key cursor [MATCH pattern] [COUNT count]
  summary: Incrementally iterate Set elements
  since: 2.8.0

  SUNION key [key ...]
  summary: Add multiple sets
  since: 1.0.0

  SUNIONSTORE destination key [key ...]
  summary: Add multiple sets and store the resulting set in a key
  since: 1.0.0

127.0.0.1:6379> 

Redis 集合(Set) 命令,不能重复的、无序

命令描述
Redis Sunion 命令返回所有给定集合的并集
Redis Scard 命令获取集合的成员数
Redis Srandmember 命令返回集合中一个或多个随机数
Redis Smembers 命令返回集合中的所有成员
Redis Sinter 命令返回给定所有集合的交集
Redis Srem 命令移除集合中一个或多个成员
Redis Smove 命令将 member 元素从 source 集合移动到 destination 集合
Redis Sadd 命令向集合添加一个或多个成员
Redis Sismember 命令判断 member 元素是否是集合 key 的成员
Redis Sdiffstore 命令返回给定所有集合的差集并存储在 destination 中
Redis Sdiff 命令返回给定所有集合的差集
Redis Sscan 命令迭代集合中的元素
Redis Sinterstore 命令返回给定所有集合的交集并存储在 destination 中
Redis Sunionstore 命令所有给定集合的并集存储在 destination 集合中
Redis Spop 命令移除并返回集合中的一个随机元素

1、smembers key 查询集合中全部元素

127.0.0.1:6379> sadd k1 a b c a d e # 在集合中添加元素
(integer) 5
127.0.0.1:6379> smembers k1  #查看集合中的所有元素,已去重
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
127.0.0.1:6379> 

2、判断集合中是否存在某个元素,存在返回1,不存在返回0

在这里插入图片描述

3、获取set集合的成员数量

在这里插入图片描述

4、移除集合的指定元素

127.0.0.1:6379> smembers k1
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
127.0.0.1:6379> srem k1 e    #移除指定键的指定值
(integer) 1
127.0.0.1:6379> scard k1     #查询集合中的元素个数
(integer) 4
127.0.0.1:6379> smembers k1  #查询集合中的所有元素
1) "c"
2) "b"
3) "a"
4) "d"
127.0.0.1:6379> 

5、随机从set集合中筛选出一个值

在这里插入图片描述
从键为 k1 的值中随机抽取3个数

127.0.0.1:6379> srandmember k1 3
1) "3"
2) "2"
3) "4"
127.0.0.1:6379> srandmember k1 3
1) "3"
2) "4"
3) "5"
127.0.0.1:6379> srandmember k1 3
1) "1"
2) "2"
3) "5"
127.0.0.1:6379> 

6、随机从set集合中删除值

在这里插入图片描述

7、将一个指定的值,移动到另外一个set集合

在这里插入图片描述

8、计算两个集合的差集

127.0.0.1:6379> sdiff k1 k2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sdiff k2 k1
1) "6"
2) "7"
3) "8"
127.0.0.1:6379> 

9、计算两个集合的交集

127.0.0.1:6379> sadd k1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd k2 4 5 6 7 8 
(integer) 5
127.0.0.1:6379> smembers k1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers k2
1) "4"
2) "5"
3) "6"
4) "7"
5) "8"
127.0.0.1:6379> sinter k1 k2
1) "4"
2) "5"
127.0.0.1:6379> sinterstore dest k1 k2
(integer) 2
127.0.0.1:6379> smembers dest
1) "4"
2) "5"
127.0.0.1:6379> 

10、计算两个集合的并集

127.0.0.1:6379> sunion k1 k2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
127.0.0.1:6379> 

5、Hash

注意:hash命令都是以 H 开头的

127.0.0.1:6379> help @hash

  HDEL key field [field ...]
  summary: Delete one or more hash fields
  since: 2.0.0

  HEXISTS key field
  summary: Determine if a hash field exists
  since: 2.0.0

  HGET key field
  summary: Get the value of a hash field
  since: 2.0.0

  HGETALL key
  summary: Get all the fields and values in a hash
  since: 2.0.0

  HINCRBY key field increment
  summary: Increment the integer value of a hash field by the given number
  since: 2.0.0

  HINCRBYFLOAT key field increment
  summary: Increment the float value of a hash field by the given amount
  since: 2.6.0

  HKEYS key
  summary: Get all the fields in a hash
  since: 2.0.0

  HLEN key
  summary: Get the number of fields in a hash
  since: 2.0.0

  HMGET key field [field ...]
  summary: Get the values of all the given hash fields
  since: 2.0.0

  HMSET key field value [field value ...]
  summary: Set multiple hash fields to multiple values
  since: 2.0.0

  HSCAN key cursor [MATCH pattern] [COUNT count]
  summary: Incrementally iterate hash fields and associated values
  since: 2.8.0

  HSET key field value [field value ...]
  summary: Set the string value of a hash field
  since: 2.0.0

  HSETNX key field value
  summary: Set the value of a hash field, only if the field does not exist
  since: 2.0.0

  HSTRLEN key field
  summary: Get the length of the value of a hash field
  since: 3.2.0

  HVALS key
  summary: Get all the values in a hash
  since: 2.0.0

127.0.0.1:6379> 

Map集合,key-map,值是一个map集合

Redis 哈希(Hash) 命令

命令描述
Redis Hmset 命令同时将多个 field-value (域-值)对设置到哈希表 key 中。
Redis Hmget 命令获取所有给定字段的值
Redis Hset 命令将哈希表 key 中的字段 field 的值设为 value 。
Redis Hgetall 命令获取在哈希表中指定 key 的所有字段和值
Redis Hget 命令获取存储在哈希表中指定字段的值/td>
Redis Hexists 命令查看哈希表 key 中,指定的字段是否存在。
Redis Hincrby 命令为哈希表 key 中的指定字段的整数值加上增量 increment 。
Redis Hlen 命令获取哈希表中字段的数量
Redis Hdel 命令删除一个或多个哈希表字段
Redis Hvals 命令获取哈希表中所有值
Redis Hincrbyfloat 命令为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
Redis Hkeys 命令获取所有哈希表中的字段
Redis Hsetnx 命令只有在字段 field 不存在时,设置哈希表字段的值。

1、修改和获取单个值

127.0.0.1:6379> hset k1 name pi age 10
(integer) 2
127.0.0.1:6379> hget k1 name
"pi"

2、批量修改和获取多个值

127.0.0.1:6379> hmset k1 name pi age 10
OK
127.0.0.1:6379> hmget k1 name age
1) "pi"
2) "10"
127.0.0.1:6379> 

获取全部的数据,以键值对存在,{key:value}

127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379> 

3、删除指定key字段,对应的value值也会消失,此值就是map键值对 {key:value}

127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379> hdel k1 name
(integer) 1
127.0.0.1:6379> hgetall k1
1) "age"
2) "10"
127.0.0.1:6379> 

4、获取hash表的字段数量

在这里插入图片描述

5、判断hash中指定字段是否存在

127.0.0.1:6379> hgetall k1
1) "age"
2) "10"
3) "name"
4) "pi"
127.0.0.1:6379> hlen k1
(integer) 2
127.0.0.1:6379> hexists k1 name  # 判断hash表中是否存在某个map
(integer) 1
127.0.0.1:6379> 

6、只获得hash中map的所有字段

127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379> 

7、只获得hash中所有map的值

127.0.0.1:6379> hkeys k1  #只获取 指定键 中的所有map中的key
1) "name"
2) "age"
127.0.0.1:6379> hvals k1  #只获取 指定键 中的所有map中的value
1) "pi"
2) "10"
127.0.0.1:6379> 

8、自增或自减 n

127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379> hincrby k1 age 1         #自增1
(integer) 11
127.0.0.1:6379> hincrbyfloat k1 age 2.0  #浮点数自增2
"13"
127.0.0.1:6379> hincrby k1 age -2         #自减2
(integer) 11
127.0.0.1:6379> hincrbyfloat k1 age -2.0  #浮点数自减2
"9"
127.0.0.1:6379> 

9、不存在即可设置,存在即不可设置

在这里插入图片描述

127.0.0.1:6379> hsetnx k1 name dan #当键name不存在时,设置成功
(integer) 0                 #因为map中存在key name,所以不可设置
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "11"
127.0.0.1:6379> hsetnx k1 sex male #因为键中不存在sex,所以添加成功
(integer) 1
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "11"
5) "sex"
6) "male"
127.0.0.1:6379> 

10、hash存储对象

hash变更的数据 user、name、age,尤其是用户信息之类的,经常变动的信息。

hash更适合于对象的存储,string更适合于字符串的存储

# hash保存对象
127.0.0.1:6379> hset ai:1 name pi age 10 sex female
(integer) 3
127.0.0.1:6379> hget ai:1 name
"pi"
127.0.0.1:6379> hmget ai:1 name age sex
1) "pi"
2) "10"
3) "female"
127.0.0.1:6379> 

6、Zset

注意:zset 所有的命令都是以 Z 开头的,有序集合

在set基础上,增加了一个值,set k1 v1zset k1 score v1

list、set、zset的区别
在这里插入图片描述

1、在zset集合中添加元素

在这里插入图片描述

2、给添加元素后的zset集合,使用score进行排序,-inf:最小的值,+inf:最大的值

在这里插入图片描述

3、给集合元素进行指定范围内的排序

在这里插入图片描述

4、移除集合中指定的值

在这里插入图片描述

5、查询有序集合中的元素个数

在这里插入图片描述

6、对集合中的元素,从大到小排序

在这里插入图片描述

7、获取指定区间的成员数量

在这里插入图片描述

7、sorted_set

127.0.0.1:6379> help @sorted_set

  BZPOPMAX key [key ...] timeout
  summary: Remove and return the member with the highest score from one or more sorted sets, or block until one is available
  since: 5.0.0

  BZPOPMIN key [key ...] timeout
  summary: Remove and return the member with the lowest score from one or more sorted sets, or block until one is available
  since: 5.0.0

  ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
  summary: Add one or more members to a sorted set, or update its score if it already exists
  since: 1.2.0

  ZCARD key
  summary: Get the number of members in a sorted set
  since: 1.2.0

  ZCOUNT key min max
  summary: Count the members in a sorted set with scores within the given values
  since: 2.0.0

  ZINCRBY key increment member
  summary: Increment the score of a member in a sorted set
  since: 1.2.0

  ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
  summary: Intersect multiple sorted sets and store the resulting sorted set in a new key
  since: 2.0.0

  ZLEXCOUNT key min max
  summary: Count the number of members in a sorted set between a given lexicographical range
  since: 2.8.9

  ZPOPMAX key [count]
  summary: Remove and return members with the highest scores in a sorted set
  since: 5.0.0

  ZPOPMIN key [count]
  summary: Remove and return members with the lowest scores in a sorted set
  since: 5.0.0

  ZRANGE key start stop [WITHSCORES]
  summary: Return a range of members in a sorted set, by index
  since: 1.2.0

  ZRANGEBYLEX key min max [LIMIT offset count]
  summary: Return a range of members in a sorted set, by lexicographical range
  since: 2.8.9

  ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  summary: Return a range of members in a sorted set, by score
  since: 1.0.5

  ZRANK key member
  summary: Determine the index of a member in a sorted set
  since: 2.0.0

  ZREM key member [member ...]
  summary: Remove one or more members from a sorted set
  since: 1.2.0

  ZREMRANGEBYLEX key min max
  summary: Remove all members in a sorted set between the given lexicographical range
  since: 2.8.9

  ZREMRANGEBYRANK key start stop
  summary: Remove all members in a sorted set within the given indexes
  since: 2.0.0

  ZREMRANGEBYSCORE key min max
  summary: Remove all members in a sorted set within the given scores
  since: 1.2.0

  ZREVRANGE key start stop [WITHSCORES]
  summary: Return a range of members in a sorted set, by index, with scores ordered from high to low
  since: 1.2.0

  ZREVRANGEBYLEX key max min [LIMIT offset count]
  summary: Return a range of members in a sorted set, by lexicographical range, ordered from higher to lower strings.
  since: 2.8.9

  ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
  summary: Return a range of members in a sorted set, by score, with scores ordered from high to low
  since: 2.2.0

  ZREVRANK key member
  summary: Determine the index of a member in a sorted set, with scores ordered from high to low
  since: 2.0.0

  ZSCAN key cursor [MATCH pattern] [COUNT count]
  summary: Incrementally iterate sorted sets elements and associated scores
  since: 2.8.0

  ZSCORE key member
  summary: Get the score associated with the given member in a sorted set
  since: 1.2.0

  ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
  summary: Add multiple sorted sets and store the resulting sorted set in a new key
  since: 2.0.0

127.0.0.1:6379> 

1 在集合中添加元素

127.0.0.1:6379> zadd k1 8 banana 6 apple 2 orange  #添加元素
(integer) 3
127.0.0.1:6379> zrange k1 0 -1   #查询集合中的全部元素,按照从小到大
1) "orange"
2) "apple"
3) "banana"
127.0.0.1:6379> zrange k1 0 -1 withscores  #查询全部元素且带分值
1) "orange"
2) "2"
3) "apple"
4) "6"
5) "banana"
6) "8"
127.0.0.1:6379> zrangebyscore k1 2 7  #按照分值取出元素
1) "orange"
2) "apple"
127.0.0.1:6379> zrange k1 0 1  #按照从小到大取出前2个元素
1) "orange"
2) "apple"
127.0.0.1:6379> zrevrange k1 0 1  #按照从大到小取出前2个元素
1) "banana"
2) "apple"
127.0.0.1:6379> zscore k1 banana  #查询元素的分值
"8"
127.0.0.1:6379> zrank k1 banana   #查询元素的排名
(integer) 2
127.0.0.1:6379> zincrby k1 2.5 apple  #给指定元素自增n
"8.5"
127.0.0.1:6379> zrange k1 0 -1 withscores  
1) "orange"
2) "2"
3) "banana"
4) "8"
5) "apple"
6) "8.5"
127.0.0.1:6379> 

2 zunionstore

127.0.0.1:6379> zadd k1 80 pi 60 dan 40 zi
(integer) 3
127.0.0.1:6379> zadd k2 50 pi 20 dan 30 xian
(integer) 3
127.0.0.1:6379> zunionstore unkey 2 k1 k2 
(integer) 4
127.0.0.1:6379> zrange unkey 0 -1 withscores
1) "xian"
2) "30"
3) "zi"
4) "40"
5) "dan"
6) "80"
7) "pi"
8) "130"
127.0.0.1:6379> zunionstore unkey1 2 k1 k2 weights 1 0.5
(integer) 4
127.0.0.1:6379> zrange unkey1 0 -1 withscores
1) "xian"
2) "15"
3) "zi"
4) "40"
5) "dan"
6) "70"
7) "pi"
8) "105"
127.0.0.1:6379> zunionstore unkey1 2 k1 k2 aggregate max
(integer) 4
127.0.0.1:6379> zrange unkey1 0 -1
1) "xian"
2) "zi"
3) "dan"
4) "pi"
127.0.0.1:6379> zrange unkey1 0 -1 withscores
1) "xian"
2) "30"
3) "zi"
4) "40"
5) "dan"
6) "60"
7) "pi"
8) "80"
127.0.0.1:6379> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值