Redis 5大数据类型命令解读

news2024/12/23 12:21:00

目录

Redis  key的命令

Redis 10大数据类型

1、redis字符串(String)

2、redis列表(List)

3、redis哈希表(Hash)

4、redis集合(Set)

5、redis有序集合(ZSet)


Redis 命令网站:redis中文文档

Redis  key的命令

命令说明示例
keys *查看当前库所有的keykeys *
exists key判断某个key是否存在exists k1
type key查看你的key是什么类型type k1
del key

删除指定key的数据

del k3
unlink key非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作unlink k2
ttl key查看还有多少秒过期,-1表示永不过期,-2表示已过期ttl k1
expire key 秒钟为给定的key设置过期时间EXPIRE k1 5
move key dbindex 【0-15】将当前数据库的kev移动到给定的数据库db中move k2 2
select dbindex切换数据库【0-15】 默认为 0select 2
dbsize查看当前数据库key的数量DBSIZE
flushdb清空当前库flushdb
flushall通杀全部库flushall

 示例:

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> keys *       #查看当前库所有的key
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> exists k1    #判断某个key是否存在
(integer) 1
127.0.0.1:6379> exists k4
(integer) 0
127.0.0.1:6379> type k1      #查看你的key是什么类型
string
127.0.0.1:6379> del k3        #删除指定key的数据
(integer) 1
127.0.0.1:6379> key *
(error) ERR unknown command 'key', with args beginning with: '*' 
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> unlink k2        #非阻塞删除
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> ttl k1            #查看还有多少秒过期
(integer) -1
127.0.0.1:6379> EXPIRE k1 5        #为给定的key设置过期时间
(integer) 1
127.0.0.1:6379> ttl k1
(integer) 3
127.0.0.1:6379> ttl k1
(integer) 1
127.0.0.1:6379> ttl k1
(integer) -2
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
127.0.0.1:6379> move k2 2        #将当前数据库的kev移动到给定的数据库db中
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> select 2        #切换数据库
OK
127.0.0.1:6379[2]> keys *
1) "k2"
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> DBSIZE            #查看当前数据库key的数量
(integer) 1
127.0.0.1:6379> flushdb            #清空当前库
OK
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> DBSIZE
(integer) 0

 注意:命令不区分大小写,而key是区分大小写的

127.0.0.1:6379> set l hello
OK
127.0.0.1:6379> set L world
OK
127.0.0.1:6379> get l
"hello"
127.0.0.1:6379> get L
"world"

永远的帮助命令,help @类型

Redis 10大数据类型

1、redis字符串(String)
命令描述
set设置指定 key 的值
get获取指定 key 的值
GETRANGE获取指定范围的值
GETSET将给定 key 的值设为 value ,并返回 key 的旧值 ( old value )
GETBIT对 key 所储存的字符串值,获取指定偏移量上的位 ( bit )
MGET获取所有(一个或多个)给定 key 的值
SETBIT对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)
SETEX设置 key 的值为 value 同时将过期时间设为 seconds
SETNX只有在 key 不存在时设置 key 的值
SETRANGE覆盖原有的值
STRLEN返回 key 所储存的字符串值的长度
MSET同时设置一个或多个 key-value 对
MSETNX同时设置一个或多个 key-value 对
PSETEX以毫秒为单位设置 key 的生存时间
INCR将 key 中储存的数字值增一
INCRBY将 key 所储存的值加上给定的增量值 ( increment )
INCRBYFLOAT将 key 所储存的值加上给定的浮点增量值 ( increment )
DECR将 key 中储存的数字值减一
DECRBY将 key 所储存的值减去给定的减量值 ( decrement )
APPEND将 value 追加到 key 原来的值的末尾

set命令的附加选项

EX seconds:以秒为单位设置过期时间
PX  milliseconds:以毫秒为单位设置过期时间
EXAT timestamp:设置以秒为单位的UNIX时间戳所对应的时间为过期时间
PXAT milliseconds-timestamp:设置以毫秒为单位的UNIX时间戳所对应的时间为过期时间

NX :键不存在的时候设置键值
XX :键存在的时候设置键值
KEEPTTL:保留设置前指定键的生存时间
GET:返回指定键原本的值,若键不存在时返回nil

字符串(String)应用场景:存储用户会话信息、缓存数据、计数器等。字符串类型是最常用的数据类型,在Redis中可以用于存储任何类型的数据,包括文本、序列化的对象等

127.0.0.1:6379> set k1 v1 
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> set k2 v2 ex 3  #以秒为单位设置过期时间
OK
127.0.0.1:6379> ttl k2            #查看过期时间
(integer) -2
127.0.0.1:6379> set k2 v2 ex 3
OK
127.0.0.1:6379> ttl k2
(integer) 2
127.0.0.1:6379> ttl k2
(integer) -2
127.0.0.1:6379> set k2 px 5000     
(error) ERR syntax error
127.0.0.1:6379> set k2 v2 px 5000        #以毫秒为单位设置过期时间
OK
127.0.0.1:6379> ttl k2
(integer) 3
127.0.0.1:6379> ttl k2
(integer) 1
127.0.0.1:6379> ttl k2
(integer) -2
127.0.0.1:6379> set k2 v2 nx        #键不存在的时候设置键值
OK
127.0.0.1:6379> set k2 v2 nx
(nil)
127.0.0.1:6379> set k2 v3 xx        #键存在的时候设置键值
OK
127.0.0.1:6379> set k2 v3 xx
OK
127.0.0.1:6379> get k2
"v3"
127.0.0.1:6379> del k1 k2
(integer) 2
127.0.0.1:6379> set k1 v1 ex 30
OK
127.0.0.1:6379> ttl k1
(integer) 27
127.0.0.1:6379> set k1 x1
OK
127.0.0.1:6379> ttl k1
(integer) -1
127.0.0.1:6379> set k1 v1 ex 30
OK
127.0.0.1:6379> ttl k1
(integer) 28
127.0.0.1:6379> set k1 v1 keepttl        #保留设置前指定键的生存时间
OK
127.0.0.1:6379> ttl k1
(integer) 23
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3     #同时设置一个或多个 key-value 对
OK
127.0.0.1:6379> mget k1 k2 k3             #获取所有(一个或多个)给定 key 的值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4        #同时设置一个或多个 key-value 对当k存在时失败
(integer) 0
127.0.0.1:6379> msetnx k4 v4
(integer) 1
127.0.0.1:6379> set k1 123456
OK
127.0.0.1:6379> GETRANGE k1 0 3        #获取指定范围的值
"1234"
127.0.0.1:6379> SETRANGE k1 2 8        #覆盖原有的值
(integer) 6
127.0.0.1:6379> get k1
"128456"
127.0.0.1:6379> set k1 1
OK
127.0.0.1:6379> incr k1             #将 key 中储存的数字值增一
(integer) 2
127.0.0.1:6379> incr k1 
(integer) 3
127.0.0.1:6379> get k1
"3"
127.0.0.1:6379> incrby k1 2        #将 key 所储存的值加上给定的增量值
(integer) 5
127.0.0.1:6379> get k1
"5"
127.0.0.1:6379> decr k1             #将 key 中储存的数字值减一
(integer) 4
127.0.0.1:6379> decrby k1 2        #将 key 所储存的值减去给定的减量值
(integer) 2
127.0.0.1:6379> set k1 asd
OK
127.0.0.1:6379> STRLEN k1        #返回 key 所储存的字符串值的长度
(integer) 3
127.0.0.1:6379> APPEND k1 asd    #追加字符串
(integer) 6
127.0.0.1:6379> get k1
"asdasd"
127.0.0.1:6379> setnx k1 v1        #只有在 key 不存在时设置 key 的值
(integer) 0
127.0.0.1:6379> getset k1 v1        #将给定 key 的值设为 value ,并返回 key 的旧值
"asdasd"
127.0.0.1:6379> get k1
"v1"
2、redis列表(List)
命令描述
BLPOP移出并获取列表的第一个元素
BRPOP移出并获取列表的最后一个元素
BRPOPLPUSH从列表中弹出一个值,并将该值插入到另外一个列表中并返回它
LINDEX通过索引获取列表中的元素
LINSERT在列表的元素前或者后插入元素
LLEN获取列表长度
LPOP移出并获取列表的第一个元素
LPUSH将一个或多个值插入到列表头部
LPUSHX将一个值插入到已存在的列表头部
LRANGE获取列表指定范围内的元素
LREM移除列表元素
LSET通过索引设置列表元素的值
LTRIM对一个列表进行修剪(trim)
RPOP移除并获取列表最后一个元素
RPOPLPUSH移除列表的最后一个元素,并将该元素添加到另一个列表并返回
RPUSH在列表中添加一个或多个值
RPUSHX为已存在的列表添加值

列表(List)应用场景:标签标记、唯一值存储、共同好友等。集合类型适合存储不重复的成员,可以进行交集、并集、差集等集合运算

127.0.0.1:6379> lpush list1 1 2 3 4 5        #将一个或多个值插入到列表,从左边添加
(integer) 5
127.0.0.1:6379> RPUSH list2 6 7 8 9 10        #将一个或多个值插入到列表,从右边添加
(integer) 5
127.0.0.1:6379> lrange list1 0 -1            #获取列表指定范围内的元素
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lrange list2 0 -1
1) "6"
2) "7"
3) "8"
4) "9"
5) "10"
127.0.0.1:6379> lpop list1                #移出并获取列表的第一个元素
"5"
127.0.0.1:6379> lrange list1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> rpop list1                #移除并获取列表最后一个元素
"1"
127.0.0.1:6379> lrange list1 0 -1
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> lindex list1 0            #通过索引获取列表中的元素
"4"
127.0.0.1:6379> lindex list1 1           
"3"
127.0.0.1:6379> llen list1                # #获取列表长度
(integer) 3
127.0.0.1:6379> LPUSH list1 1 1 1 2 2 2 3 3 3
(integer) 12
127.0.0.1:6379> lrange list1 0 -1
 1) "3"
 2) "3"
 3) "3"
 4) "2"
 5) "2"
 6) "2"
 7) "1"
 8) "1"
 9) "1"
10) "4"
11) "3"
12) "2"
127.0.0.1:6379> lrem list1 3 1            #移除列表元素,3移除元素的个数,1要移除的元素
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
1) "3"
2) "3"
3) "3"
4) "2"
5) "2"
6) "2"
7) "4"
8) "3"
9) "2"
127.0.0.1:6379> ltrim list1 5 8            #对一个列表进行修剪,截取值
OK
127.0.0.1:6379> lrange list1 0 -1
1) "2"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> lrange list2 0 -1
1) "6"
2) "7"
3) "8"
4) "9"
5) "10"
127.0.0.1:6379> rpoplpush list1 list2   #移除列表的最后一个元素并将该元素添加到另一个列表
"2"
127.0.0.1:6379> lrange list1 0 -1
1) "2"
2) "4"
3) "3"
127.0.0.1:6379> lrange list2 0 -1
1) "2"
2) "6"
3) "7"
4) "8"
5) "9"
6) "10"
127.0.0.1:6379> lset list1 0 redis                #通过索引设置列表元素的值
OK
127.0.0.1:6379> lrange list1 0 -1                
1) "redis"
2) "4"
3) "3"
127.0.0.1:6379> linsert list1 before redis java        #在列表的元素前或者后插入元素
(integer) 4
127.0.0.1:6379> lrange list1 0 -1
1) "java"
2) "redis"
3) "4"
4) "3"
3、redis哈希表(Hash)
命令说明
HDEL用于删除哈希表中一个或多个字段
HEXISTS用于判断哈希表中字段是否存在
HGET获取存储在哈希表中指定字段的值
HGETALL获取在哈希表中指定 key 的所有字段和值
HINCRBY为存储在 key 中的哈希表指定字段做整数增量运算
HKEYS获取存储在 key 中的哈希表的所有字段
HLEN获取存储在 key 中的哈希表的字段数量
HSET用于设置存储在 key 中的哈希表字段的值
HVALS用于获取哈希表中的所有值

哈希表(Hash)应用场景:存储对象属性,比如用户信息、商品信息等。哈希表类型适合存储结构化的数据,可以方便地进行字段级别的读取和更新操作 

127.0.0.1:6379> hset user:001 id 1 name zhangsan age 20    #存储在key中的哈希表字段的值
(integer) 3
127.0.0.1:6379> hget user:001 id                #获取存储在哈希表中指定字段的值
"1"
127.0.0.1:6379> hget user:001 name                
"zhangsan"
127.0.0.1:6379> hmset user:002 id 2 name lisi age 21         ##添加多个值
OK
127.0.0.1:6379> hmget user:001 id name age                ##获取多个值
1) "1"
2) "zhangsan"
3) "20"
127.0.0.1:6379> hgetall user:001                #获取在哈希表中指定 key 的所有字段和值            
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "20"
127.0.0.1:6379> hdel user:001 age                #用于删除哈希表中一个或多个字段
(integer) 1
127.0.0.1:6379> hgetall user:001
1) "id"
2) "1"
3) "name"
4) "zhangsan"
127.0.0.1:6379> hlen user:001                #获取存储在 key 中的哈希表的字段数量
(integer) 2
127.0.0.1:6379> hexists user:001 name        #用于判断哈希表中字段是否存在
(integer) 1
127.0.0.1:6379> hkeys user:001                #获取存储在 key 中的哈希表的所有字段
1) "id"
2) "name"
127.0.0.1:6379> hvals user:001                #用于获取哈希表中的所有值
1) "1"
2) "zhangsan"
127.0.0.1:6379> hset user:001 age 20 score 88
(integer) 2
127.0.0.1:6379> hgetall user:001
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "20"
7) "score"
8) "88"
127.0.0.1:6379> hincrby user:001 age 1            #指定字段做整数增量运算
(integer) 21
127.0.0.1:6379> hincrby user:001 age 1
(integer) 22
127.0.0.1:6379> hgetall user:001
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "22"
7) "score"
8) "88" 
127.0.0.1:6379> HINCRBYFLOAT user:001 score 0.5        #指定字段做小数增量运算
"88.5"
127.0.0.1:6379> HINCRBYFLOAT user:001 score 0.5
"89"
127.0.0.1:6379> hgetall user:001
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "22"
7) "score"
8) "89"
127.0.0.1:6379> hsetnx user:001 emial 1@qq.com         #没有就添加
(integer) 1
127.0.0.1:6379> hsetnx user:001 emial 1@qq.com
(integer) 0
127.0.0.1:6379> hgetall user:001
 1) "id"
 2) "1"
 3) "name"
 4) "zhangsan"
 5) "age"
 6) "22"
 7) "score"
 8) "89"
 9) "emial"
10) "1@qq.com"
4、redis集合(Set)
命令描述
SADD向集合添加一个或多个成员
SCARD获取集合的成员数
SDIFF返回给定所有集合的差集
SDIFFSTORE返回给定所有集合的差集并存储在 destination 中
SINTER返回给定所有集合的交集
SINTERSTORE返回给定所有集合的交集并存储在 destination 中
SISMEMBER判断 member 元素是否是集合 key 的成员
SMEMBERS返回集合中的所有成员
SMOVE将 member 元素从 source 集合移动到 destination 集合
SPOP移除并返回集合中的一个随机元素
SRANDMEMBER返回集合中一个或多个随机数
SREM移除集合中一个或多个成员
SUNION返回所有给定集合的并集
SUNIONSTORE所有给定集合的并集存储在 destination 集合中
SSCAN迭代集合中的元素
SINTERCARDredis7新命令
它不返回结果集,而只返回结果的基数。
返回由所有给定集合的交集产生的集合的基数

集合(Set)应用场景:标签标记、唯一值存储、共同好友等。集合类型适合存储不重复的成员,可以进行交集、并集、差集等集合运算 

127.0.0.1:6379> sadd set1 1 1 1 2 2 2 3 3 4 5       #向集合添加一个或多个成员
(integer) 5
127.0.0.1:6379> SMEMBERS set1                        #返回集合中的所有成员
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SISMEMBER set1 x                    #判断 member 元素是否是集合 key 的成员
(integer) 0
127.0.0.1:6379> SISMEMBER set1 1
(integer) 1
127.0.0.1:6379> SISMEMBER set1 5
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> srem set1 1                #返回集合中一个或多个随机数
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> srem set1 5
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> scard set1                #获取集合的成员数
(integer) 3
127.0.0.1:6379> SRANDMEMBER set1 3        #返回集合中一个或多个随机数
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> SMEMBERS set1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> spop set1 1                #移除并返回集合中的一个随机元素
1) "4"
127.0.0.1:6379> SMEMBERS set1
1) "2"
2) "3"
127.0.0.1:6379> sadd set2 a b c
(integer) 3
127.0.0.1:6379> smove set1 set2 2        #将 member 元素从A集合移动到B 集合
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "3"
127.0.0.1:6379> SMEMBERS set2
1) "2"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> del set1
(integer) 1
127.0.0.1:6379> del set2
(integer) 1
127.0.0.1:6379> sadd set1 1 2 3 a b c
(integer) 6
127.0.0.1:6379> sadd set2 3 4 5 c d e
(integer) 6
127.0.0.1:6379> sdiff set1 set2                #返回给定所有集合的差集
1) "1"
2) "b"
3) "2"
4) "a"
127.0.0.1:6379> sdiff set2 set1
1) "d"
2) "e"
3) "5"
4) "4"
127.0.0.1:6379> sunion set1 set2            #返回给定所有集合的并集
 1) "1"
 2) "2"
 3) "c"
 4) "a"
 5) "b"
 6) "d"
 7) "4"
 8) "e"
 9) "3"
10) "5"
127.0.0.1:6379> sinter set1 set2            #返回给定所有集合的交集
1) "3"
2) "c"
127.0.0.1:6379> SINTERCARD 2 set1 set2
(integer) 2
127.0.0.1:6379> SINTERCARD 2 set1 set2 limit 1
(integer) 1
127.0.0.1:6379> SINTERCARD 2 set1 set2 limit 2
(integer) 2
127.0.0.1:6379> SINTERCARD 2 set1 set2 limit 3
(integer) 2
5、redis有序集合(ZSet)
命令描述
ZADD向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD获取有序集合的成员数
ZCOUNT计算在有序集合中指定区间分数的成员数
ZINCRBY有序集合中对指定成员的分数加上增量 increment
ZINTERSTORE计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZLEXCOUNT在有序集合中计算指定字典区间内成员数量
ZRANGE通过索引区间返回有序集合成指定区间内的成员
ZRANGEBYLEX通过字典区间返回有序集合的成员
ZRANGEBYSCORE通过分数返回有序集合指定区间内的成员
ZRANK返回有序集合中指定成员的索引
ZREM移除有序集合中的一个或多个成员
ZREMRANGEBYLEX移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE移除有序集合中给定的分数区间的所有成员
ZREVRANGE返回有序集中指定区间内的成员,通过索引,分数从高到底
ZREVRANGEBYSCORE返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK作用是逆序获得下标值
ZSCORE返回有序集中,成员的分数值
ZUNIONSTORE计算一个或多个有序集的并集,并存储在新的 key 中
ZSCAN迭代有序集合中的元素(包括元素成员和元素分值)
zmpop从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对

 有序集合(Sorted Set)应用场景:排行榜、优先级队列等需要有序性的场景。有序集合类型可以存储成员及其对应的分数(score),并根据分数进行排序和范围查询 

127.0.0.1:6379> zadd zset1 60 v1 70 v2 80 v3 90 v4 100 v5  #向有序集合添加一个或多个成员
(integer) 5
127.0.0.1:6379> zrange zset1 0 -1                #通过索引区间返回有序集合成指定区间内的成员
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
127.0.0.1:6379> zrange zset1 0 -1 withscores
 1) "v1"
 2) "60"
 3) "v2"
 4) "70"
 5) "v3"
 6) "80"
 7) "v4"
 8) "90"
 9) "v5"
10) "100"
127.0.0.1:6379> ZREVRANGE zset1 0 -1 withscores        #返回集合,分数从高到底
 1) "v5"
 2) "100"
 3) "v4"
 4) "90"
 5) "v3"
 6) "80"
 7) "v2"
 8) "70"
 9) "v1"
10) "60"
127.0.0.1:6379> zrangebyscore zset1 60 90        #通过分数返回有序集合指定区间内的成员
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> zrangebyscore zset1 60 90 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
127.0.0.1:6379> zscore zset1 v5            #返回有序集中,成员的分数值
"100"
127.0.0.1:6379> zscore zset1 v4
"90"
127.0.0.1:6379> zcard zset1                #获取有序集合的成员数
(integer) 5
127.0.0.1:6379> zrem zset1 v5                #移除有序集合中的一个或多个成员
(integer) 1
127.0.0.1:6379> zrem zset1 v5
(integer) 0
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
127.0.0.1:6379> ZINCRBY zset1 5 v1            #有序集合中对指定成员的分数加上增量
"65"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "v1"
2) "65"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
127.0.0.1:6379> zmpop 1 zset1 min count 1     #从键名列表中的第一个非空排序集中弹出一个
1) "zset1"
2) 1) 1) "v1"
      2) "65"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "v2"
2) "70"
3) "v3"
4) "80"
5) "v4"
6) "90"
127.0.0.1:6379> zrange zset1 0 -1    
1) "v2"
2) "v3"
3) "v4"
127.0.0.1:6379> zrank zset1 v2        #返回有序集合中指定成员的索引
(integer) 0
127.0.0.1:6379> zrank zset1 v3
(integer) 1
127.0.0.1:6379> zrevrank zset1 v3      #作用是逆序获得下标值
(integer) 1
127.0.0.1:6379> zrevrank zset1 v4
(integer) 0
127.0.0.1:6379> zcount zset1 70 80            #计算在有序集合中指定区间分数的成员数
(integer) 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1199857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能基础——图像认知与OpenCV

人工智能的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心,我为大家整理了一份600多G的学习资源,基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

【Python基础】try-finally语句和with语句

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

灰度与二值化

人工智能的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心,我为大家整理了一份600多G的学习资源,基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

No180.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

统计学_蒙特卡罗方法

1、蒙特卡罗方法的基本思想 蒙特卡罗方法(Monte Carlo method)是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称,不是特指一种方法。 蒙特卡罗方法也成统计模拟方法&am…

【彻底搞懂C指针 】Malloc 和 Free 的具体实现 (笔记)

【彻底搞懂C指针】Malloc 和 Free 的具体实现 https://danluu.com/malloc-tutorial/ 进程间的通信 : ①共享内存 ② 消息传递 (内核实现) 分配策略 (实现方面) by DUCK sbrk() malocal实现的主要函数 man sbrk 查看 数据结构 一个参考代码 https…

软件架构的可维护性指标——代码圈复杂度

代码圈复杂度 1、目的2、前言3、简介4、案例5、降低6、插件7、总结 1、目的 区别于常规的高内聚、低耦合、抽象、封装这种定性的指标,我想通过对软件架构可维护性的可量化的指标的分享,帮助大家在日常的开发工作中,有一个更为广阔的视角去审…

No181.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

共享内存原理和实现

实现原理 实现函数 1,ftok--shmget--shmat--shmdt shmget用于分配映射物理内存的虚拟内存。 怎么保证不同进程访问同一块物理内存呢 key_t ftok(const char *pathname, int proj_id); ftok的第一个参数是一个文件,只要使用同一个文件进行映射&#x…

STM32F4之看门狗

1、 看门狗作用 单片机复位的方式:硬件复位 -- reset按键 上电复位 -- 电容 看门狗复位 看门狗的复位功能主要是用于一些平常难以操作的场合去帮助我们进行复位操作。当你单片机突然死机或者程序跑飞了,看门狗就可以检测得到并且及时帮你复位。看门狗也可…

74hc595模块参考

74hc595模块参考 8位串行并行输出(SIPO)移位寄存器 使用74HC595移位寄存器扩展微控制器上的输出引脚数量。如果你需要扩充输入引脚的数量那么你需要74HC165移位寄存器。 SER(串行输入)引脚用于一次一位地将数据发送到移位寄存器…

(离散数学)逻辑连接词

异或可以理解为不同为1相同为0 P->Q的前件和后件满足0->1的其中一个就为真 <—>可以看做 &#xff0c;相同为1不同为0 异或与等价相反

Torch Hub 系列#2:VGG 和 ResNet

一、说明 在上一篇教程中,我们了解了 Torch Hub 背后的本质及其概念。然后,我们使用 Torch Hub 的复杂性发布了我们的模型,并通过相同的方式访问它。但是,当我们的工作要求我们利用 Torch Hub 上提供的众多全能模型之一时,会发生什么? 在本教程中,我们将学习如何利用称为…

MySQL:日志系统

目录 概述错误日志&#xff08;error log&#xff09;慢查询日志&#xff08;slow query log&#xff09;一般查询日志( general log )中继日志&#xff08;relay log&#xff09;Buffer Pool 缓存回滚日志&#xff08;undo log)概述undo log 作用undo log 的存储机制Undo log …

WorkPlus Meet:局域网内部使用的高效视频会议系统

随着全球化和远程办公的趋势&#xff0c;视频会议已成为现代企业和机构不可或缺的沟通工具。而现在&#xff0c;大多数政企单位或者涉密强的企业&#xff0c;都会使用局域网部署的音视频会议系统&#xff0c;提供更高的安全性和隐私保护。因为音视频会议中可能涉及到公司机密和…

Angular 使用教程——基本语法和双向数据绑定

Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用 Angular 是一个基于 TypeScript 构建的开发平台。它包括&#xff1a;一个基于组件的框架&#xff0c;用于构建可伸缩的 Web 应用&#xff0c;一组完美集成的库&#xff0c;涵盖各种功能&…

基于SSM的考研图书电子商务平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

HDMI之编码篇

概述 HDMI 2.0b(含)以下版本,采用3个Channel方式输出。传输又分为3三种周期,视频数据,数据岛以及控制周期。视频传输采用8/10编码。数据岛采用4/10编码(TERC4)。控制周期采用2/10。编码都拓展成了10bits。 上图中,Pixel component(e.g.B)->D[7:0]表示视频数据周期…

linux之IPC

linux之IPC 什么是IPC共享内存(shm)ftokshmgetshmatshmdtshmctl 消息队列msggetmsgrcvmsgsndmsgctl 旗语(信号量)semgetsemctlsemopsem三级标题三级标题 ipc命令守护进程查看守护进程 什么是IPC IPC: Inter(内核) Process(进程) Communicton&#xff08;通信&#xff09; 共享内…

【Delphi】 各个平台使用 ntfy 效果说明

目录 一、Delphi 中使用 ntfy 库下载地址 二、各个平台使用效果说明 1. android 平台 2. ios 平台 3. windows 平台 三、总结 一、Delphi 中使用 ntfy 库下载地址 官方的文档地址&#xff1a;ntfyDelphi 接口库地址&#xff1a;GitHub - hazzelnuts/ntfy-for-delphi at …