Redis(三)(*^▽^*)活学活用---五种数据类型

前言

redis 是一种非关数据库(内存/缓存)
redis相比于其他非关数据库优势的地方主要在于数据类型丰富,支持 key-value、hashes、strings sets(有序、无序)、list等数据类型,本章会详细讲解各数据类型

一、string数据类型

概述: String是redis 最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等

1、SET/GET/APPEND/STRLEN

基本格式

  1. set key value:修改键值
  2. get key:获取键值
实例

```csharp
get kl		##获取kl键的值
set kl 2		##修改kl键的值为2

在这里插入图片描述

  1. append key value:追加键值,并返回追加后的长度(若键不存在,则相当于创建)
  2. strlen key:判断字符串的长度
127.0.0.1:6379> exists kl		##判断该键是否存在,存在返回1,否则返回0
(integer) 1
127.0.0.1:6379> append kl 3		##该键已经存在,因此返回追加后value的长度
(integer) 2
127.0.0.1:6379> get kl
"23"
127.0.0.1:6379> append kl2 3	##该键并不存在,因此append命令返回当前Value的长度并创建
(integer) 1
127.0.0.1:6379> get kl2
"3"
exists kl2		##判断该键是否存在,存在返回1,否则返回0
(integer) 1
127.0.0.1:6379> strlen kl		##获取kl键的字符长度
(integer) 2

2、INCR/ DECR/ I NCRBY/ DECRBY

基本格式:

  1. INCR key: key值递增指定的整数
  2. DECR1key: key值递减指定的整数

实例

以上两种一般排名时会使用到
127.0.0.1:6379> get kl		##获取kl键的值
"23"
127.0.0.1:6379> incr kl		##kl键值加1
(integer) 24
127.0.0.1:6379> incr kl		##kl键值加1
(integer) 25
127.0.0.1:6379> decr kl		##kl键值减1
(integer) 24
127.0.0.1:6379> decr kl		##kl键值减1
(integer) 23
127.0.0.1:6379> get kl
"23"
针对不存在的键自增和自减法的基数是0
incr kl2		##对于kl2键自增1
decr kl2		##对于kl2键自减1

在这里插入图片描述
无法对非整数进行操作

set kl 0.1		##修改kl键值为0.1

在这里插入图片描述
字符串也是一样无法操作

set kl2 haha		##修改kl2键值为haha

在这里插入图片描述

  1. incrby key increment ##键增加指定的整数
  2. decrby key decrement ##键减少指定的整数
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set kl 1		##修改键值为1
OK
127.0.0.1:6379> get kl 
"1"
127.0.0.1:6379> incrby kl 4		##kl键增加4
(integer) 5
127.0.0.1:6379> get kl 
"5"
127.0.0.1:6379> decrby kl 4		##kl键减少4
(integer) 1
127.0.0.1:6379> get kl
"1"

3、 GETSET

基本格式:

  1. getset key value ##获取key值并返回,同时给key设置新值;即:先获取key值并返回key值,再次get key会获取设置的新值
127.0.0.1:6379> keys *
1) "kl"
127.0.0.1:6379> get kl
"1"
127.0.0.1:6379> getset kl 0		##先获取kl的值为1,再返回值
"1"
127.0.0.1:6379> get kl		##get获取的是新值
"0"

4、SETEX

基本格式:

  1. setex key seconds value:设置指定key的过期时间为seconds;ex:最大
  2. ttl key ##查看指定Key的剩余存活时间(秒数);-2表示已经过期,-1代表最大值,表示永不过期

实例

127.0.0.1:6379> setex  zyt 10 haha		##设定zyt键值haha过期时间为10s
OK
127.0.0.1:6379> get zyt
"haha"
127.0.0.1:6379> ttl zyt		##查询zyt键剩余存活时间为5s
(integer) 5
127.0.0.1:6379> ttl zyt		##查询zyt键剩余存活时间为3s
(integer) 3
127.0.0.1:6379> ttl zyt		##ttl值为-2时为值失效
(integer) -2
127.0.0.1:6379> get zyt
(nil)
127.0.0.1:6379> set kl 1
OK
127.0.0.1:6379> get kl		##未设置过期时间的显示值为-1
"1"
127.0.0.1:6379> ttl kl
(integer) -1

5、SETNX

基本格式:

  1. setnx key value: 不存在键的话执行set操作返回值1,存在的话不执行修改,返回值0

实例

127.0.0.1:6379> setnx kl 2		##修改kl键值为2,不存在则修改返回值1
(integer) 1
127.0.0.1:6379> get kl
"2"
127.0.0.1:6379> setnx kl 3		##修改kl键值为3,此时kl键已存在则不执行修改,返回值0
(integer) 0
127.0.0.1:6379> get kl		##获取kl键值仍为2
"2"

6、 MSET/MGET/MSETNX

基本格式:

  1. mset key value [key value …] ##批量设置键值对;m:批量
  2. mget key [key …] ##批量获取键值对
  3. msetnx key value [key value …] ##批量设置键值对,键都不存在就执行并返回1;只要有一个键存在就不执行并返回0

实例

127.0.0.1:6379> mset kl 2 kl1 3 kl2 4		##批量创建键值kl、kl1、kl2
OK
127.0.0.1:6379> mget kl kl1 kl2		##批量查询键值kl、kl1、kl2
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> msetnx kl 5 qq 1 ww 2		##批量设置了kl、qq、ww键值,因为kl键已存在,所以msetnx命令执行不成功返回1
(integer) 0
127.0.0.1:6379> mget kl qq www		##因为msetnx命令执行不成功,所以qq和ww键未设置成功,返回nil
1) "2"
2) (nil)
3) (nil)
127.0.0.1:6379> msetnx aa 2 bb 3		##批量设置了aa和bb键值,因为之前并不存在,所以msetnx命令执行成功返回1
(integer) 1
127.0.0.1:6379> mget aa bb		 ##成功获取aa和bb键的值
1) "2"
2) "3"

二、List数据类型

概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

1、LPUSH/LPUSHX/LRANGE

基本格式

  1. lpush key value [value …] ##在头部(左侧)依次插入列表元素;l:left
  2. lpushx key value ##键必须存在才能执行,在头部插入元素值并返回列表元素数量;l:left;0:代表索引下标,第一个元素;-1:最大值,最后一个元素
  3. lrange key start stop ##取从位置索引start到位置索引stop的所有元素( 索引以0开始);L:list
    实例
127.0.0.1:6379> lpush kl 1 2 3 4 5 6 7		##在kl键的值1的位置左侧插入234567
(integer) 7
127.0.0.1:6379> lrange kl 0 -1		##查询整个列表;0:第一个元素;-1:最后一个元素
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> lrange kl 0 1000		##仅显示有的元素
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> get kl		##使用get是无法查询的,需要使用lrange
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> lpushx kl2 8		##在kl2键插入元素8,因为键不存在,返回
(integer) 0
127.0.0.1:6379> lrange kl2 0 -1
(empty list or set)
127.0.0.1:6379> lpushx kl 8		##在左侧插入元素8,返回元素的数量
(integer) 8
127.0.0.1:6379> lrange kl 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"

2、LPOP/LLEN

基本格式

  1. lpop key ##移除并返回键的第一个元素,即从右往左第一个
  2. llen key ##获取表中元素数量

实例

127.0.0.1:6379> lrange kl2 0 -1		##查询所有元素
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lpop kl2		##移除并返回键的第一个元素
"4"
127.0.0.1:6379> lrange kl2 0 -1		##查询所有元素,发现元素4已被移除
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> llen kl2		##在执行lpop命令一次后,链表头部的两个元素已经被移除,此时链表中元素的数量是3
(integer) 3

3、LREM/LSET/LINDEX/LTRIM

基本格式

  1. lrem key count value ##从列表头部开始删除count个值为value的元素,并返回实际删除数量

实例

127.0.0.1:6379> lpush kl 1 2 3 4 1 2 3
(integer) 7
127.0.0.1:6379> lrange kl 0 -1
1) "3"
2) "2"
3) "1"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> lrem kl 2 2		##删除kl键22
(integer) 2
127.0.0.1:6379> lrange kl 0 -1
1) "3"
2) "1"
3) "4"
4) "3"
5) "1"   
127.0.0.1:6379> lrem kl 3 1		##删除kl键31,返回告知只有21并且删除
(integer) 2
127.0.0.1:6379> lrange kl 0 -1
1) "3"
2) "4"
3) "3"
  1. lset key index value ##将位置索引为index的元素设置新值value
  2. lindex key index ##获取索引为index的元素
  3. ltrim key start stop ##仅保留从位置索引start到索引stop的元素

实例

127.0.0.1:6379> lset kl 2 a		##将索引2位置替换成a
OK
127.0.0.1:6379> lrange kl 0 -1	##索引从0开始,所以替换的是第三行
1) "3"
2) "4"
3) "a"
127.0.0.1:6379> lindex kl 2		##获取索引为2的元素
"a"	
127.0.0.1:6379> ltrim kl 0 1		##仅保留索引值0-1中间的元素
OK
127.0.0.1:6379> lrange kl 0 -1	##查询所有的元素只剩下索引0-1,三行
1) "3"
2) "4"

4、 LINSERT

基本格式

  1. LINSERT key BEFORE|AFTER pivot value: 在元素pivot的前面(做左)或后面(右)插入新元素value

实例

127.0.0.1:6379> lpush kl 1 2 3 4 5 6		##新键kl
(integer) 6
127.0.0.1:6379> linsert kl before 1 a		##在元素1前面插入a
(integer) 7
127.0.0.1:6379> lrange kl 0 -1		##从结果看已经插入成功
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "a"
7) "1"
127.0.0.1:6379> lset kl 1 4		##修改索引1位置改为4
OK
127.0.0.1:6379> lrange kl 0 -1		##查询已经修改成功
1) "6"
2) "4"
3) "4"
4) "3"
5) "2"
6) "a"
7) "1"
127.0.0.1:6379> linsert kl after 4 b	 ##在元素4后面插入元素b
(integer) 8
127.0.0.1:6379> lrange kl 0 -1	##查询是在第一个4后面插入
1) "6"
2) "4"
3) "b"
4) "4"
5) "3"
6) "2"
7) "a"
127.0.0.1:6379>  linsert kl after 8 q	##在元素8后面插入q;元素8并不存在,linsert命令操作失败,返回-1
(integer) -1
127.0.0.1:6379> linsert kl2 after 8 q		##为不存在的键插入新元素,linsert命令操作失败,返回0
(integer) 0

5、BPUSH/RPUSHX/RPOP/RPOPLPUSH

基本格式

  1. rpush key value [value …] ##在列表的尾部依次插入value;l:list
  2. rpushx key value ##key必须存在才可执行,将value从尾部插入,并返回所有元素数量
  3. rpop key ##在尾部弹出(移除)一个元素,并返回该元素
  4. rpoplpush source destination ##在key1的尾部弹出一个元素并返回,将它插入key2的头部

实例

127.0.0.1:6379> rpush kl 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange kl 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> rpushx kl a		##kl键尾部插入a,并返回元素数量
(integer) 6
127.0.0.1:6379> lrange kl 0 -1		##查询插入成功
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "a"
127.0.0.1:6379> rpop kl		##移除并返回kl键的第一个元素,从右取
"a"
127.0.0.1:6379> lrange kl 0 -1	##查询最右的元素a已被移除
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> rpoplpush kl kl2		##将kl键的尾部元素弹出插入到kl2键的首部
"4"
127.0.0.1:6379> lrange kl 0 -1		##查询显示kl键尾部元素4已被弹出
1) "5"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> lrange kl2 0 -1		##查询显示kl2键首部元素4已被插入
1) "4"

三、Hash数据类型(散列类型)

概述: hash用于存储对象。可以采用这样的命名方式(hash格式) :对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对

1、HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX

常用格式

  1. hset key field value ##设置键值对;h:哈希数据类型;field:字段
  2. hget key field ##查询键的值
  3. hdel key field [field …] ##删除键中字段名为field的字段,删除成功返回1;不成功返回0
  4. hexists key field #判断键中是否存在字段名为field的字段,若存在返回值为1,不存在返回0
  5. hlen key ###获取键的字段数量
  6. hsetnx key field value ##添加新字段field和值,字段不存在添加成功返回1,字段存在未添加成功返回0

实例

127.0.0.1:6379> hset kl field 1		##设置kl键字段field的值为1
(integer) 1
127.0.0.1:6379> hget kl field			##查询kl键的字段field的值
"1"
127.0.0.1:6379> hget kl1 field		##kl键中不存在field字段,因此返回nil
(nil)
127.0.0.1:6379> hlen kl		##获取kl键的字段数量;返回2
(integer) 2
127.0.0.1:6379> hexists kl field	##查询kl键内存在字段field,返回1
(integer) 1
127.0.0.1:6379> hexists kl field3	##查询kl键内不存在字段field,返回0
(integer) 0
127.0.0.1:6379> hdel kl field		##删除kl键的field字段
(integer) 1
127.0.0.1:6379> hget kl field		##查询没有kl键的field字段
(nil)	
127.0.0.1:6379> hsetnx kl field1 2		##kl键字段field1存在,未添加成功返回0
(integer) 0
127.0.0.1:6379> hsetnx kl field 2		##kl键字段field不存在,添加成功返回1
(integer) 1

2、HINCRBY

常用格式

  1. hincrby key field increment ##指定键的字段自增/自减

实例

127.0.0.1:6379> hincrby kl field 1		##给kl键的field字段的值加1,返回加后的结果
(integer) 1
127.0.0.1:6379> hincrby kl field 5		##给kl键的field字段的值加5,返回加后的结果
(integer) 6
127.0.0.1:6379> hincrby kl field -15	##给kl键的field字段的值减15,返回加后的结果
(integer) -9

3、HGETALL/HKEYS/HVALS/HMGET/HMSET

常用格式

  1. hgetall key ##获取所有键值对
  2. hkeys key ##获取键内所有字段
  3. hvals key ##获取键的字段值
  4. hmget key field [field …] ##获取键指定字段的值
  5. hmset key field value [field value …] ##批量设置键指定字段的值

实例

127.0.0.1:6379> hmset kl field 1 name zhangsan add nj 	##修改kl键的field字段值为1,name字段值为zhangsan,add字段值为nj;返回值为字段数量
(integer) 3
127.0.0.1:6379> hgetall kl	##查询所有键值对
1) "field"
2) "1"
3) "name"
4) "zhangsan"
5) "add"
6) "nj"
127.0.0.1:6379> hkeys kl		##获取kl键的所有字段
1) "field"
2) "name"
3) "add"
127.0.0.1:6379> hmget kl field name add age	##获取kl键的字段的值,没有的字段返回nil
1) "1"
2) "zhangsan"
3) "nj"
4) (nil)
127.0.0.1:6379> hvals kl		##获取kl键的字段值
1) "1"
2) "zhangsan"
3) "nj"
127.0.0.1:6379> hkeys kl		##获取kl键的所有字段
1) "field"
2) "name"
3) "add"
127.0.0.1:6379> hmget kl field name add age	##获取kl键的字段的值,没有的字段返回nil
1) "1"
2) "zhangsan"
3) "nj"
4) (nil)
127.0.0.1:6379> hvals kl		##获取kl键的字段值
1) "1"
2) "zhangsan"
3) "nj"

四、set数据类型(无序集合)

元素类型为string类型, 元素具有唯一性,
不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算
应用范围:

  1. 可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性。
  2. 充分利用Set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的Set中, 而购买另外一种电子产品的客户ID被存储在另外一个Set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,Set的intersections 命令就可以充分发挥它的方便和效率的优势了

1、SADD/SMEMBERS/SCARE/SISMEMBER

常用格式

  1. sadd key member [member …] ##添加键和元素;若元素已存在不会重复添加
  2. smembers key ##查看指定键的成员
  3. scard key ##查看指定键的元素个数
  4. sismember key member ##判断元素是否存在,存在返回1,不存在返回0
    SCARE:元素数量
    SISMEMBER:判断该无序集合中成员是否存在

实例

127.0.0.1:6379> sadd kl 1 2 3 4		##添加kl键的元素1234
(integer) 4
127.0.0.1:6379> sadd kl 1 3 5 6		## 添加kl键的元素1356,返回值为2,因为13已存在,不会重复添加
(integer) 2
127.0.0.1:6379> smembers kl		##查看指定kl键的成员
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> sismember kl 1		##查询kl键的元素1,存在返回1
(integer) 1
127.0.0.1:6379> sismember kl 11		##查询kl键的元素11,不存在返回0
(integer) 0
127.0.0.1:6379> scard kl		##查看kl键的元素个数
(integer) 6

2、SPOP/SREM/SRANDMEMBER/SMOVE

常用格式

  1. spop key [count] ##随机移除键的指定数量的元素,不加数量默认1
  2. srem key member [member …] ##移除键的指定成员
  3. smembers key ##查看指定键的所有成员
  4. srandmember key [count] ##随机返回一个成员
  5. smove source destination member ##可以把无序集合中的元素移动到另一个无须集合

实例

127.0.0.1:6379> sadd kl 1 2 3 4 5 	##添加kl键和元素1 2 3 4 5
(integer) 3
127.0.0.1:6379> srandmember kl 1	##随机弹出kl键的值,返回5
1) "5"
127.0.0.1:6379> smembers kl	##查询kl键的成员
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> spop kl		##指定kl键弹出1位成员并移除
"2"
127.0.0.1:6379> smembers kl	##查询已移除成员2
1) "1"
2) "3"
3) "4"
4) "5"
5) "6"
127.0.0.1:6379> srem kl 1 2		##移除kl键的成员1 2 ,其中成员2不存在,只会移除1
(integer) 1
127.0.0.1:6379> smembers kl	##查询已移除成员1
1) "3"
2) "4"
3) "5"
4) "6"
127.0.0.1:6379> smove kl kl1 3	##移动kl键内的成员3到kl1键内
(integer) 1
127.0.0.1:6379> smembers kl	##查询kl键内已无成员3
1) "4"
2) "5"
3) "6"
127.0.0.1:6379> smembers kl1	##查询kl1键内已有成员3
1) "3"

五、Sorted Set数据类型(zset、 有序集合)

概述:

  1. 有序集合,元素类型为Sting, 元素具有唯一 性,不能重复。
  2. 每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。
    应用范围:
    可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP10的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
    Sorted-Set类型还可用于构建索引数据。

1、ZADD/ZCARD/ZCOUNT/ZREM/ZINCRBY/ZSCORE/ZRANGE/ZRANK

常用格式:

  1. zadd key [NX|XX] [CH] [INCR] score member [score member …] ##添加指定键的成员的分数
  2. zcard key ##返回指定键的成员数量
  3. zcount key min max ##返回符合筛选权重的成员数量
  4. zrem key member [member …] ##指定删除1个/多个成员,返回实际删除的数量
  5. zincrby key increment member ##指定自增分数,返回该成员更新后的分数;初始分数为0
  6. zscore key member ##查询指定的成员分数,返回值为字符串形式
  7. zrange key start stop [WITHSCORES] ##查询键指定位置的成员和分数;0:第一个;-1:最后一个;withscores:返回的结果中包含每个成员及其分数,否则值返回成员
  8. zrank key member ##查询键指定成员的索引

实例

127.0.0.1:6379> zadd kl 1 zs		##添加kl键的zs的分数为1
(integer) 1
127.0.0.1:6379> zadd kl 2 ls 3 qt		##可以批量添加
(integer) 2
127.0.0.1:6379> zrange kl 0 -1		##查询kl键的成员
1) "zs"
2) "ls"
3) "qt"
127.0.0.1:6379> zrange kl 0 -1 withscores	##查询kl键的成员和分数
1) "zs"
2) "1"
3) "ls"
4) "2"
5) "qt"
6) "3"
127.0.0.1:6379> zrank kl zs		##返回kl键zs成员的索引
(integer) 0
127.0.0.1:6379> zcard kl		##返回kl键的成员数量
(integer) 3
127.0.0.1:6379> zcount kl 1 3		##返回kl键的分数符合1≤score≥3的成员数量
(integer) 3
127.0.0.1:6379> zrem kl 1 zs 2 wq	##指定删除2个成员,2不存在,返回实际删除的数量1
(integer) 1
127.0.0.1:6379> zscore kl qt		##查看指定成员的分数,返回字符串3
"3"

2、ZRANGE BY SCORE/ZREM RANGE BYRANK/ZREM RANGE BY SCORE

常用格式

  1. zrangebyscore key min max [WITHSCORES] [LIMIT offset count] ##获取分数满足表达式的成员
  2. zrangebyscore key min max [WITHSCORES] [LIMIT offset count] ##指定分数范围删除
  3. zremrangebyrank key start stop ##删除满足范围位置索引

实例

127.0.0.1:6379> zrangebyscore kl 1 2	##获取分数满足表达式1 <=score <= 2的成员
1) "one"
2) "two"
127.0.0.1:6379> zrangebyscore kl (1 2	##获取分数满足表达式1 <score <= 2的成员
1) "two"
127.0.0.1:6379> zrangebyscore kl -inf +inf limit 2 3	##-inf:第一 个成员(位置索引值最低的,即0)+inf:最后一个成员(位置索引值最高的),limit后面的参数用于限返回成员的值,2表示从位置索引等于2的成员开始,取后而3个成员
1) "there"
2) "four"
3) "five"
127.0.0.1:6379> zrangebyscore kl 1 2	##删除分数满足表达式1 <= score <=2的成员,并返回实际删除的数量
1) "one"
2) "two"
127.0.0.1:6379> zremrangebyrank kl 0 1	##删除位置索引满足表达式0 <= rank <= 1的成员
(integer) 2
127.0.0.1:6379> zrange kl 0 -1	##查询已删除成功
1) "there"
2) "four"
3) "five"
4) "six"
5) "seven"

3、ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK

常用格式

  1. zrevrange key start stop [WITHSCORES] ##以位置索引从高到低的方式获取并返回此区间内的成员
  2. zrevrank key member ##输出指定成员的位置/索引
  3. zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count] ##基于分数/权重,并在满足的范围内排序,默认从大到小

实例

127.0.0.1:6379> zadd kl 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrevrange kl 0 -1 withscores	##返回kl键的索引的成员和分数,从高到低排队
1) "four"
2) "4"
3) "three"
4) "3"
5) "two"
6) "2"
7) "one"
8) "1"
127.0.0.1:6379> zrevrange kl 1 3	##由于是从高到低的排序,所以位置等于0的是four,1是three, 并以此类推
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrank kl two	##由于是从高到低的排序,所以two的位置/索引下标是2
(integer) 2
127.0.0.1:6379> zrevrangebyscore kl 3 1 	##kl键获取分数满足1≤score≥3,并从高到低输出
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrangebyscore kl 4 0 limit 1 2	##zrevrangebyscore命令支持limit选项,其含义等同于zrangebyscore中的该选项,只是在计算位置时按照相反的顺序计算和获取。
1) "three"
2) "two"

六、小结:

  1. string字符串
    set:修改
    get:获取
    mget:批量获取
    append key value:追加键值,并返回追加后的长度(若键不存在,则相当于创建)**
    strlen key:判断字符串的长度
    incr key: key值递增指定的整数
    decr key: key值递减指定的整数
    incrby key increment:键增加指定的整数**
    decrby key decrement:键减少指定的整数
    getset key value:获取key值并返回,同时给key设置新值**;即:先获取key值并返回key值,再次get key会获取设置的新值
    setex key seconds value:设置指定key的过期时间为seconds;ex:最大
    ttl key:查看指定Key的剩余存活时间(秒数);-2表示已经过期,-1代表最大值,表示永不过期
    setnx key value: 不存在键的话执行set操作返回值1,存在的话不执行修改,返回值0
    mset key value [key value …]:批量设置键值对;m:批量
    mget key [key …]:批量获取键值对
    msetnx key value [key value …]:批量设置键值对,键都不存在就执行并返回1;只要有一个键存在就不执行并返回0

  2. list列表查询
    lpush key value [value …]:在头部(左侧)依次插入列表元素;l:left
    pushx key value:键必须存在才能执行,在头部插入元素值并返回列表元素数量;l:left;0:代表索引下标,第一个元素;-1:最大值,最后一个元素
    lrange key start stop:取从位置索引start到位置索引stop的所有元素( 索引以0开始);L:list
    lpop key:移除并返回键的第一个元素,即从右往左第一个
    llen key:获取表中元素数量
    lrem key count value:从列表头部开始删除count个值为value的元素,并返回实际删除数量
    lset key index value :将位置索引为index的元素设置新值value**
    lindex key index:获取索引为index的元素**
    ltrim key start stop:仅保留从位置索引start到索引stop的元素
    LINSERT key BEFORE|AFTER pivot value: 在元素pivot的前面(做左)或后面(右)插入新元素value
    rpush key value [value …]:在列表的尾部依次插入value;l:list
    rpushx key value:key必须存在才可执行,将value从尾部插入,并返回所有元素数量
    rpop key:在尾部弹出(移除)一个元素,并返回该元素
    rpoplpush source destination:在key1的尾部弹出一个元素并返回,将它插入key2的头部

  3. hash散列类型
    hget查询指定hash散列类型的指定字段的值
    hmget批量指定hash散列类型的查询字段及对应的值
    hkeys查询指定hash散列类型的字段名
    hvals查询指定hash散列类型的值
    |myhash |name |score|age|add
    |–|--|–|--|–|
    | 1 | lisl |80|29|nj

  4. set数据类型(无序集合)
    smembers key ##查看指定键的成员

  5. zset无序
    zrangebyscore

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值