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 字符串命令:

序号

命令及描述

1

SET key value 设置指定 key 的值

2

GET key 获取指定 key 的值

3

GETRANGE key start end 返回 key 中字符串值的子字符 【) GETRANGE key 0 -1 获取全部字符串=getKey

4

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

5

GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

6

MGET 获取所有(一个或多个)给定 key 的值。mget k1 k2 k3

7

SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

8

SETEX (set with expire) 设置过期时间

9

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

10

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

11

STRLEN key 返回 key 所储存的字符串值的长度。string length

12

MSET 同时设置一个或多个 key-value 对。mset k1 v1 k2 v2 k3 v3

13

MSETNX key value [key value …] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

14

PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。

15

INCR key 将 key 中储存的数字值增一。 自增1

16

INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。自增n eg:incrby 10

17

INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。

18

DECR key 将 key 中储存的数字值减一。 自减1

19

DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。自减1 eg:decrby 10

20

APPEND 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 的值

类似redis的国产分布式缓存系统 redis 类似_Redis

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

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

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_02


类似redis的国产分布式缓存系统 redis 类似_字符串_03

4、阅读量案例

类似redis的国产分布式缓存系统 redis 类似_字符串_04


类似redis的国产分布式缓存系统 redis 类似_Redis_05

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

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_06

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

类似redis的国产分布式缓存系统 redis 类似_Redis_07

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

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_08

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

类似redis的国产分布式缓存系统 redis 类似_Redis_09


类似redis的国产分布式缓存系统 redis 类似_redis_10

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

类似redis的国产分布式缓存系统 redis 类似_redis_11

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

类似redis的国产分布式缓存系统 redis 类似_字符串_12

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

类似redis的国产分布式缓存系统 redis 类似_字符串_13

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

类似redis的国产分布式缓存系统 redis 类似_字符串_14

13、help set 查询set命令

类似redis的国产分布式缓存系统 redis 类似_redis_15

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

类似redis的国产分布式缓存系统 redis 类似_Redis_16

15、decr、decrby 自减 1或n

类似redis的国产分布式缓存系统 redis 类似_Redis_17

16、object 查看类型

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_18

扩展:二进制安全

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_19

bitMap 知识点

二进制中1byte 有 8bit

命令1:setbit k1 1 1

类似redis的国产分布式缓存系统 redis 类似_字符串_20


类似redis的国产分布式缓存系统 redis 类似_redis_21


命令分析:

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表

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_22


命令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

类似redis的国产分布式缓存系统 redis 类似_Redis_23


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 的统计

类似redis的国产分布式缓存系统 redis 类似_redis_24


类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_25

4、bitop

类似redis的国产分布式缓存系统 redis 类似_redis_26


目标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不区分大小写

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

序号

命令及描述

1

BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

2

BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

3

BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

4

LINDEX key index 通过索引获取列表中的元素

5

LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素

6

LLEN key 获取列表长度

7

LPOP key 移出并获取列表的第一个元素

8

LPUSH key value1 [value2] 将一个或多个值插入到列表头部

9

LPUSHX key value 将一个或多个值插入到已存在的列表头部

10

LRANGE key start stop 获取列表指定范围内的元素

11

LREM key count value 移除列表元素

12

LSET key index value 通过索引设置列表元素的值

13

LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

14

RPOP key 移除并获取列表最后一个元素

15

RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

16

RPUSH key value1 [value2] 在列表中添加一个或多个值

17

RPUSHX key value 为已存在的列表添加值

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

案例:

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_27

2、获取列表全部的值

类似redis的国产分布式缓存系统 redis 类似_字符串_28

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

类似redis的国产分布式缓存系统 redis 类似_redis_29

4、从列表中移除元素

Lpop:从左边移除

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_30


Rpop:从右边移除

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_31

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

类似redis的国产分布式缓存系统 redis 类似_redis_32

6、Llen 获取列表的长度

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_33

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_34


类似redis的国产分布式缓存系统 redis 类似_字符串_35

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

类似redis的国产分布式缓存系统 redis 类似_Redis_36

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_37

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

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_38

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_39


类似redis的国产分布式缓存系统 redis 类似_Redis_40

12、lset k value

类似redis的国产分布式缓存系统 redis 类似_redis_41

13、Blpop 命令

1、node1

类似redis的国产分布式缓存系统 redis 类似_Redis_42


2、node2

类似redis的国产分布式缓存系统 redis 类似_redis_43


3、node3

类似redis的国产分布式缓存系统 redis 类似_偏移量_44

14、LTRIM 命令

类似redis的国产分布式缓存系统 redis 类似_redis_45

小结

实际上是一个链表,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

类似redis的国产分布式缓存系统 redis 类似_字符串_46

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_47

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集合中筛选出一个值

类似redis的国产分布式缓存系统 redis 类似_redis_48


从键为 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集合中删除值

类似redis的国产分布式缓存系统 redis 类似_redis_49

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_50

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表的字段数量

类似redis的国产分布式缓存系统 redis 类似_redis_51

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、不存在即可设置,存在即不可设置

类似redis的国产分布式缓存系统 redis 类似_字符串_52

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的区别

类似redis的国产分布式缓存系统 redis 类似_偏移量_53

1、在zset集合中添加元素

类似redis的国产分布式缓存系统 redis 类似_偏移量_54

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

类似redis的国产分布式缓存系统 redis 类似_Redis_55

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

类似redis的国产分布式缓存系统 redis 类似_字符串_56

4、移除集合中指定的值

类似redis的国产分布式缓存系统 redis 类似_偏移量_57

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_58

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

类似redis的国产分布式缓存系统 redis 类似_类似redis的国产分布式缓存系统_59

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

类似redis的国产分布式缓存系统 redis 类似_偏移量_60

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>