前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简简单单入个Redis的门

简简单单入个Redis的门

作者头像
code随笔
发布2020-11-06 13:37:39
3240
发布2020-11-06 13:37:39
举报
文章被收录于专栏:code随笔的专栏code随笔的专栏

Redis介绍

Redis是一种key-value的存储系统,它是一种nosql(Not Only [SQL])非关系型的数据库,它支持string(字符串)、list(链表)、set(集合)、hash(哈希类型)和zset(sorted set --有序集合)数据类型,这些数据类型有着丰富的操作,且均具有原子性。

Redis基本指令

keys *

前面已经介绍,Redis是一种key-value的存储系统,** keys * ** 便是查看当前库里有何键; 当前库中无任何键,所以输入** keys * **则返回(empty list or set);

代码语言:javascript
复制
127.0.0.1:6379> keys *
(empty list or set)

输入set k1 v1(设置k1的键对应的value值为v1) set k2 v2(设置k2的键对应的value值为v2)

代码语言:javascript
复制
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK

此时再输入** keys * ** 则返回k2和k1两个键

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "k2"
2) "k1"

exists < key >

exists < key > 用来判断某个键是否存在; 刚才已经设置了k1和k2两个键; 我们先输入一下exists k1试试看;

代码语言:javascript
复制
127.0.0.1:6379> exists k1
(integer) 1

我们输入exists k3试试看

代码语言:javascript
复制
127.0.0.1:6379> exists k3
(integer) 0

我们发现,当存在这个键时返回1,当不存在时返回0;

type < key >

type < key > 用来查看某个键的类型; 后面介绍了五大数据类型后,一一尝试此指令;

del < key >

del < key >用来删除某个键; 此时当前库中有k1和k2两个键,如输入del k1

代码语言:javascript
复制
127.0.0.1:6379> del k1
(integer) 1

再来查看库中的键,只剩k2了

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "k2"

如果输入一个不存在的键呢?

代码语言:javascript
复制
127.0.0.1:6379> del k3
(integer) 0

会返回0

expire < key > < seconds >

expire < key > < seconds > 为已经存在的键设置过期时间(单位秒) 如输入expire k2 10,那么k2键将会在10秒后过期;

代码语言:javascript
复制
127.0.0.1:6379> expire k2 10
(integer) 1

10秒后再查看当前库中的键

代码语言:javascript
复制
127.0.0.1:6379> keys *
(empty list or set)

当前库已经空了;

ttl < key >

ttl < key > 用来查看某个键还有多长时间过期: -1表示永不过期; -2表示已过期; 依次输入 set test1 1 set test2 2

代码语言:javascript
复制
127.0.0.1:6379> set test1 1
OK
127.0.0.1:6379> set test2 2
OK

此时库中有test1和test2两个键 输入 expire test1 20 意味着给test1设置20秒的过期时间

代码语言:javascript
复制
127.0.0.1:6379> expire test1 20
(integer) 1

一直输入ttl test1

代码语言:javascript
复制
127.0.0.1:6379> ttl test1
(integer) 16
127.0.0.1:6379> ttl test1
(integer) 12
127.0.0.1:6379> ttl test1
(integer) 8
127.0.0.1:6379> ttl test1
(integer) 2
127.0.0.1:6379> ttl test1
(integer) -2
127.0.0.1:6379> 

可以看到其过期时间,为-2则为已过期 输入ttl test2查看test2的过期时间

代码语言:javascript
复制
127.0.0.1:6379> ttl test2
(integer) -1

-1表示永不过期

dbsize

此指令用来查看当前redis库中的key的数量; 目前库中只有test2一个键

代码语言:javascript
复制
127.0.0.1:6379> dbsize
(integer) 1

返回1

flushdb

flushdb用来清空当前库,将当前库中所有键删掉

代码语言:javascript
复制
127.0.0.1:6379> flushdb
OK

再输入dbsize

代码语言:javascript
复制
127.0.0.1:6379> dbsize
(integer) 0

数量已经为0

flushall

此指令用来通杀全部库; 当redis 服务器初始化时,会预先分配 16 个数据库(该数量可以通过配置文件配置),我们只用了16个库中的一个,使用此命令会清空所有库中的键,慎用。

可存储的五大数据类型

在介绍前,先输入flushdb清空下当前redis库

代码语言:javascript
复制
127.0.0.1:6379> flushdb
OK

String——字符串

redis的键可以存储字符串String类型的值;下面介绍其相关指令:

set < key > < value >

set < key > < value >用来设置键值对; 如我依次输入 set keyString1 abc set keyString2 123

代码语言:javascript
复制
127.0.0.1:6379> set keyString1 abc
OK
127.0.0.1:6379> set keyString2 123
OK

用type < key >指令查看类型

代码语言:javascript
复制
127.0.0.1:6379> type keyString1
string
127.0.0.1:6379> type keyString2
string

get < key >

此指令用来查询key对应的值; 如输入get keyString1

代码语言:javascript
复制
127.0.0.1:6379> get keyString1      
"abc"

append < key > < tailvalue >

此指令用于将给定的< tailvalue >增加到原来< key >对应的value之后; 目前keyString2 对应 "123"; 如输入append keyString2 xyz

代码语言:javascript
复制
127.0.0.1:6379> append keyString2 xyz
(integer) 6

返回其长度6; 再输入get keyString2如下

代码语言:javascript
复制
127.0.0.1:6379> get keyString2
"123xyz"

strlen < key >

此指令获取< key >对应的值的长度; 如下:

代码语言:javascript
复制
127.0.0.1:6379> strlen keyString1
(integer) 3
127.0.0.1:6379> strlen keyString2
(integer) 6

setnx < key > < value >

此指令的用法是: 只有当< key >不存在时才设置键值对;

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "keyString1"
2) "keyString2"

此时当前库中有两个键; 如输入 setnx keyString3 mnopq

代码语言:javascript
复制
127.0.0.1:6379> setnx keyString3 mnopq
(integer) 1

返回1; 查看当前库中键,查看keyString3对应的值

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "keyString1"
2) "keyString3"
3) "keyString2"
127.0.0.1:6379> get keyString3
"mnopq"

如输入 setnx keyString1 mnopq

代码语言:javascript
复制
127.0.0.1:6379> setnx keyString1 mnopq
(integer) 0
127.0.0.1:6379> keys *
1) "keyString1"
2) "keyString3"
3) "keyString2"
127.0.0.1:6379> get keyString1
"abc"

由此可见,未改变keyString1的值。

incr < key >

此指令用于将key中储存的数字字符串值增加1 (只能对数字字符串值操作,如果为空,新增值为1); 如输入以下内容:

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "keyString1"
2) "keyString3"
3) "keyString2"
127.0.0.1:6379> set keyString4 123456
OK
127.0.0.1:6379> incr keyString4
(integer) 123457
127.0.0.1:6379> get keyString1
"abc"
127.0.0.1:6379> incr keyString1
(error) ERR value is not an integer or out of range
127.0.0.1:6379> incr keyString5
(integer) 1
127.0.0.1:6379> keys *
1) "keyString1"
2) "keyString4"
3) "keyString3"
4) "keyString5"
5) "keyString2"
127.0.0.1:6379> get keyString5
"1"

decr < key >

将key中储存的数字值字符串减去1 (只能对数字字符串值操作,如果为空,新增值为-1); 与incr < key > 类似

incrby / decrby < key > < 步长 >

将key中存储的数字值字符串增加/减去自定义步长(只能对数字字符串值操作,如果为空,新增值为步长或者负步长);

mset < key1 > < value1 > < key2 > < value2 > .....

此指令用于同时设置一个或多个 key-value对 ,与set < key > < value >类似,不过是多设置几个;

mget < key1 > < key2 > < key3 > .....

同时获取一个或多个 value ;与get < key >类似,不过是获取多个值;

msetnx < key1 > < value1 > < key2 > < value2 > .....

当且仅当所有给定 key 都不存在时,同时设置一个或多个 key-value 对 ; 与setnx < key > < value >类似;

getrange < key > < 起始位置 > < 结束位置 >

此指令获得值的范围(包前也包后)

代码语言:javascript
复制
127.0.0.1:6379> set keyString6 123456abcdef
OK
127.0.0.1:6379> getrange keyString6 0 6
"123456a"
127.0.0.1:6379> getrange keyString6 1 5
"23456"

如想获取从开始到结束的字符串,结束位置用-1即可;

代码语言:javascript
复制
127.0.0.1:6379> getrange keyString6 0 -1
"123456abcdef"

setrange < key > < 起始位置 > < value2 >

从< 起始位置 >用< value2>开始覆写< key > 所储存的字符串值; 如下所示:

代码语言:javascript
复制
127.0.0.1:6379> get keyString6
"123456abcdef"
127.0.0.1:6379> setrange keyString6 2 xyz
(integer) 12
127.0.0.1:6379> get keyString6
"12xyz6abcdef"

setex < key > < 过期时间 > < value >

设置键值的同时,设置过期时间,单位秒

代码语言:javascript
复制
127.0.0.1:6379> setex kkk 20 123
OK
127.0.0.1:6379> ttl kkk
(integer) 17
127.0.0.1:6379> ttl kkk
(integer) 12
127.0.0.1:6379> ttl kkk
(integer) 9
127.0.0.1:6379> ttl kkk
(integer) 4
127.0.0.1:6379> ttl kkk
(integer) 1
127.0.0.1:6379> ttl kkk
(integer) -2

getset < key > < value >

以新换旧,设置了新值同时获得旧值; 如:

代码语言:javascript
复制
127.0.0.1:6379> get keyString1
"abc"
127.0.0.1:6379> getset keyString1 123
"abc"
127.0.0.1:6379> get keyString1
"123"

list——字符串列表

其底层是双向链表,两端操作性能高,通过索引下标操作中间节点性能较差,下面介绍其指令:

lpush/rpush < key > < value1 > < value2 > < value3 > ....

该指令用于从左边/右边插入一个或多个值; 输入如下:

代码语言:javascript
复制
127.0.0.1:6379> lpush myList1 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> rpush myList2 a b c d e f
(integer) 6
127.0.0.1:6379> lpush myList3 7 8 9
(integer) 3
127.0.0.1:6379> rpush myList3 x y z
(integer) 6

用type查看类型

代码语言:javascript
复制
127.0.0.1:6379> type myList2
list

myList1从左边插入,1先进入,2后进入...所以6在最左边,1在最右边; myList2从右边插入,a先进入,b后进入...a在最左边,f在最右边; myList3先从左边插入,7先进入,8后进入,9最后进入,所以从左到右依次时,9,8,7; myList3再从右边插入,插入后,从左到右依次是,9,8,7,x,y,z;

lrange < key > < start > < stop >

按照索引下标获得元素(从左到右);

代码语言:javascript
复制
127.0.0.1:6379> lrange myList1 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379> lrange myList2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> lrange myList3 0 -1
1) "9"
2) "8"
3) "7"
4) "x"
5) "y"
6) "z"
127.0.0.1:6379> lrange myList1 0 2
1) "6"
2) "5"
3) "4"
127.0.0.1:6379> 

lpop/rpop < key >

从左边/右边吐出一个值 值在键在,值光键亡;

代码语言:javascript
复制
127.0.0.1:6379> lpop myList1
"6"
127.0.0.1:6379> lrange myList1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> rpop myList1
"1"
127.0.0.1:6379> lrange myList1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> lpop myList1
"5"
127.0.0.1:6379> lpop myList1
"4"
127.0.0.1:6379> lpop myList1
"3"
127.0.0.1:6379> lpop myList1
"2"
127.0.0.1:6379> lpop myList1
(nil)
127.0.0.1:6379> exists myList1
(integer) 0

rpoplpush < key1 > < key2 >

从< key1 >列表右边吐出一个值,插到< key2 >列表左边; 如:

代码语言:javascript
复制
127.0.0.1:6379> lrange myList2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> lrange myList3 0 -1
1) "9"
2) "8"
3) "7"
4) "x"
5) "y"
6) "z"
127.0.0.1:6379> rpoplpush myList2 myList3
"f"
127.0.0.1:6379> lrange myList2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> lrange myList3 0 -1
1) "f"
2) "9"
3) "8"
4) "7"
5) "x"
6) "y"
7) "z"

lindex < key > < index >

按照索引下标获得元素(从左到右)

代码语言:javascript
复制
127.0.0.1:6379> lrange myList2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> lindex myList2 2
"c"

llen < key > 获得列表长度

代码语言:javascript
复制
127.0.0.1:6379> llen myList2
(integer) 5
127.0.0.1:6379> llen myList3
(integer) 7

linsert < key > before(after) < value > < newvalue >

此命令为在< key >对应的< value >的前(后)面插入< newvalue >

代码语言:javascript
复制
127.0.0.1:6379> lrange myList2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> linsert myList2 before b 123
(integer) 6
127.0.0.1:6379> lrange myList2 0 -1
1) "a"
2) "123"
3) "b"
4) "c"
5) "d"
6) "e"

lrem < key > < n > < value >

从左边删除n个value(从左到右) n为正数表示从左往右删除几个 n为负数表示从右往左删几个 n为0表示删除所有 如:

代码语言:javascript
复制
127.0.0.1:6379> rpush myList4 1 a 2 b c a 2 1
(integer) 8
127.0.0.1:6379> lrange myList4 0 -1
1) "1"
2) "a"
3) "2"
4) "b"
5) "c"
6) "a"
7) "2"
8) "1"
127.0.0.1:6379> lrem myList4 1 1
(integer) 1
127.0.0.1:6379> lrange myList4 0 -1
1) "a"
2) "2"
3) "b"
4) "c"
5) "a"
6) "2"
7) "1"
127.0.0.1:6379> lrem myList4 1 2
(integer) 1
127.0.0.1:6379> lrange myList4 0 -1
1) "a"
2) "b"
3) "c"
4) "a"
5) "2"
6) "1"
127.0.0.1:6379> lrem myList4 0 a
(integer) 2
127.0.0.1:6379> lrange myList4 0 -1
1) "b"
2) "c"
3) "2"
4) "1"

set——字符串无序集合

底层其实是一个value为null的 hash表,添加,删除,查找的复杂度都是O(1); 其指令如下:

sadd < key > < value1 > < value2 > .....

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。 如:

代码语言:javascript
复制
127.0.0.1:6379> sadd mySet1 1 2 3 a b c 2 3
(integer) 6
127.0.0.1:6379> sadd mySet2 x y z m n 
(integer) 5

用type查看类型

代码语言:javascript
复制
127.0.0.1:6379> type mySet1
set

smembers < key >

取出该集合的所有值,如:

代码语言:javascript
复制
127.0.0.1:6379> smembers mySet1
1) "1"
2) "3"
3) "2"
4) "b"
5) "c"
6) "a"
127.0.0.1:6379> smembers mySet2
1) "y"
2) "m"
3) "z"
4) "x"
5) "n"

sismember < key > < value >

判断集合< key >是否为含有该< value >值,有返回1,没有返回0; 如:

代码语言:javascript
复制
127.0.0.1:6379> sismember mySet1 a
(integer) 1
127.0.0.1:6379> sismember mySet1 123456
(integer) 0

scard < key >

返回该集合的元素个数

代码语言:javascript
复制
127.0.0.1:6379> scard mySet1
(integer) 6
127.0.0.1:6379> scard mySet2
(integer) 5

srem < key > < value1 > < value2 > ....

删除集合中的某(几)个元素;

代码语言:javascript
复制
127.0.0.1:6379> smembers mySet2
1) "y"
2) "m"
3) "z"
4) "x"
5) "n"
127.0.0.1:6379> srem mySet2 m
(integer) 1
127.0.0.1:6379> smembers mySet2
1) "z"
2) "x"
3) "y"
4) "n"
127.0.0.1:6379> srem mySet2 x n
(integer) 2
127.0.0.1:6379> smembers mySet2
1) "y"
2) "z"
127.0.0.1:6379> srem mySet2 1 2
(integer) 0

删除几个返回几;

spop < key >

随机从该集合中吐出一个元素,会从集合中删除 ;

代码语言:javascript
复制
127.0.0.1:6379> spop mySet1
"3"
127.0.0.1:6379> smembers mySet1
1) "1"
2) "2"
3) "b"
4) "c"
5) "a"

srandmember < key > < n >

随机从该集合中取出n个值,不会从集合中删除

代码语言:javascript
复制
127.0.0.1:6379> smembers mySet1
1) "1"
2) "2"
3) "b"
4) "c"
5) "a"
127.0.0.1:6379> srandmember mySet1 2
1) "1"
2) "b"
127.0.0.1:6379> srandmember mySet1 10
1) "c"
2) "1"
3) "b"
4) "2"
5) "a"
127.0.0.1:6379> smembers mySet1
1) "1"
2) "2"
3) "b"
4) "c"
5) "a"

如果超过集合中的个数,则全部返回;

sinter < key1 > < key2 >

返回两个集合的交集元素;

sunion < key1 > < key2 >

返回两个集合的并集元素;

sdiff < key1 > < key2 >

返回两个集合的差集元素; 如:

代码语言:javascript
复制
127.0.0.1:6379> sadd testSet1 a 1 2 x y
(integer) 5
127.0.0.1:6379> sadd testSet2 a b 2 x z
(integer) 5
127.0.0.1:6379> sinter testSet1 testSet2
1) "a"
2) "x"
3) "2"
127.0.0.1:6379> sunion testSet1 testSet2
1) "1"
2) "y"
3) "x"
4) "2"
5) "b"
6) "a"
7) "z"
127.0.0.1:6379> sdiff testSet1 testSet2
1) "y"
2) "1"

hash——string类型的field和value的映射表

hset < key > < field > < value >

给< key >集合中的 < field >键赋值< value >

代码语言:javascript
复制
127.0.0.1:6379> hset studentInfo student:001:name testName1
(integer) 1

用type查看类型

代码语言:javascript
复制
127.0.0.1:6379> type studentInfo
hash

hget < key1 > < field >

从< key1 >集合< field > 取出 value

代码语言:javascript
复制
127.0.0.1:6379> hget studentInfo student:001:name
"testName1"

hmset < key1 > < field1 > < value1 > < field2 > < value2 >...

批量设置hash的值; 如:

代码语言:javascript
复制
127.0.0.1:6379> hmset studentInfo student:001:stuid 001 student:001:stuname testName1 student:001:stuage 16
OK

hexists < key > < field >

此命令用来查看哈希表 key 中,给定域 field 是否存在

代码语言:javascript
复制
127.0.0.1:6379> hexists studentInfo student:001:stuname
(integer) 1
127.0.0.1:6379> hexists studentInfo student:001:stusex
(integer) 0

hkeys < key >

此命令用于列出该hash集合的所有field ;

hvals < key >

此命令用于列出该hash集合的所有value;

hgetall < key >

此命令用于列出该hash集合所有的key和value; 如:

代码语言:javascript
复制
127.0.0.1:6379> hkeys studentInfo
1) "student:001:name"
2) "student:001:stuid"
3) "student:001:stuname"
4) "student:001:stuage"
127.0.0.1:6379> hvals studentInfo
1) "testName1"
2) "001"
3) "testName1"
4) "16"
127.0.0.1:6379> hgetall studentInfo
1) "student:001:name"
2) "testName1"
3) "student:001:stuid"
4) "001"
5) "student:001:stuname"
6) "testName1"
7) "student:001:stuage"
8) "16"

hincrby < key > < field > < increment >

为哈希表 key 中的域 field 的值加上增量 increment (需为数值型字符串类型);

代码语言:javascript
复制
127.0.0.1:6379> hget studentInfo student:001:stuage
"16"
127.0.0.1:6379> hincrby studentInfo student:001:stuage 2
(integer) 18

hsetnx < key > < field > < value >

当域 field 不存在时将哈希表 key 中的域 field 的值设置为 value ;

代码语言:javascript
复制
127.0.0.1:6379> hsetnx studentInfo student:001:stuage 36
(integer) 0
127.0.0.1:6379> hsetnx studentInfo student:001:stusex male
(integer) 1
127.0.0.1:6379> hget studentInfo student:001:stusex
"male"

zset——字符串有序集合

它是没有重复元素的字符串集合。每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复的。

zadd < key > < score1 > < value1 > < score2 > < value2 >...

此命令用于将一个或多个 member 元素及其 score 值加入到有序集 key 当中;

代码语言:javascript
复制
127.0.0.1:6379> zadd myZset 10 a 100 b 20 c 1000 d 500 e
(integer) 5

用type命令查看

代码语言:javascript
复制
127.0.0.1:6379> type myZset
zset

如果添加相同元素,相同分数肯定是添加不进去的; 如果添加相同元素,不同分数将分数更改为最新的分数; 如果添加不同元素,相同分数 可以添加进去;

代码语言:javascript
复制
127.0.0.1:6379> zadd myZset 10 a
(integer) 0
127.0.0.1:6379> zadd myZset 10000 a
(integer) 0
127.0.0.1:6379> zadd myZset 6 m 6 n
(integer) 2

zrange < key > < start > < stop > [WITHSCORES]

返回有序集 key 中,下标在< start > < stop >之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。

代码语言:javascript
复制
127.0.0.1:6379> zadd myZset2 10 x 100 y 1000 z
(integer) 3
127.0.0.1:6379> zrange myZset 0 -1
1) "m"
2) "n"
3) "c"
4) "b"
5) "e"
6) "d"
7) "a"
127.0.0.1:6379> zrange myZset 0 -1 WITHSCORES
 1) "m"
 2) "6"
 3) "n"
 4) "6"
 5) "c"
 6) "20"
 7) "b"
 8) "100"
 9) "e"
10) "500"
11) "d"
12) "1000"
13) "a"
14) "10000"

zvrange < key > < start > < stop > [WITHSCORES]

同上,改为从大到小排列。

zrangebyscore key min max [ withscores ] [ limit offset count ]

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

代码语言:javascript
复制
127.0.0.1:6379> zrangebyscore myZset 100 1000
1) "b"
2) "e"
3) "d"
127.0.0.1:6379> zrangebyscore myZset 1000 1000
1) "d"

如果知道一个值的分数,min和max均写此分数即可;

zrevrangebyscore key max min [ withscores ] [ limit offset count ]

同上,改为从大到小排列。

zincrby < key > < increment > < value >

此指令用于为元素的score加上增量;

代码语言:javascript
复制
127.0.0.1:6379> zadd myZset2 10 x 100 y 1000 z
(integer) 3
127.0.0.1:6379> zincrby myZset2 20 x
"30"
127.0.0.1:6379> zrange myZset2 0 -1 WITHSCORES
1) "x"
2) "30"
3) "y"
4) "100"
5) "z"
6) "1000"

zrem < key > < value >

删除该集合下,指定值的元素; 如:

代码语言:javascript
复制
127.0.0.1:6379> zrem myZset2 x
(integer) 1
127.0.0.1:6379> zrange myZset2 0 -1 WITHSCORES
1) "y"
2) "100"
3) "z"
4) "1000"

zcount < key > < min > < max >

统计该集合,分数区间内的元素个数;

代码语言:javascript
复制
127.0.0.1:6379> zrange myZset 0 -1 WITHSCORES
 1) "m"
 2) "6"
 3) "n"
 4) "6"
 5) "c"
 6) "20"
 7) "b"
 8) "100"
 9) "e"
10) "500"
11) "d"
12) "1000"
13) "a"
14) "10000"
127.0.0.1:6379> zcount myZset 100 1000
(integer) 3

zrank < key > < value >

返回该值在集合中的排名,从0开始

代码语言:javascript
复制
127.0.0.1:6379> zrank myZset e
(integer) 4

最后

本文介绍了Redis基本指令、可存储的五大数据类型和这五大数据类型的指令,希望大家可以通过此篇入门Redis.。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis介绍
  • Redis基本指令
    • keys *
      • exists < key >
        • type < key >
          • del < key >
            • expire < key > < seconds >
              • ttl < key >
                • dbsize
                  • flushdb
                    • flushall
                    • 可存储的五大数据类型
                      • String——字符串
                        • set < key > < value >
                        • get < key >
                        • append < key > < tailvalue >
                        • strlen < key >
                        • setnx < key > < value >
                        • incr < key >
                        • decr < key >
                        • incrby / decrby < key > < 步长 >
                        • mset < key1 > < value1 > < key2 > < value2 > .....
                        • mget < key1 > < key2 > < key3 > .....
                        • msetnx < key1 > < value1 > < key2 > < value2 > .....
                        • getrange < key > < 起始位置 > < 结束位置 >
                        • setrange < key > < 起始位置 > < value2 >
                        • setex < key > < 过期时间 > < value >
                        • getset < key > < value >
                      • list——字符串列表
                        • lpush/rpush < key > < value1 > < value2 > < value3 > ....
                        • lrange < key > < start > < stop >
                        • lpop/rpop < key >
                        • rpoplpush < key1 > < key2 >
                        • lindex < key > < index >
                        • llen < key > 获得列表长度
                        • linsert < key > before(after) < value > < newvalue >
                        • lrem < key > < n > < value >
                      • set——字符串无序集合
                        • sadd < key > < value1 > < value2 > .....
                        • smembers < key >
                        • sismember < key > < value >
                        • scard < key >
                        • srem < key > < value1 > < value2 > ....
                        • spop < key >
                        • srandmember < key > < n >
                        • sinter < key1 > < key2 >
                        • sunion < key1 > < key2 >
                        • sdiff < key1 > < key2 >
                      • hash——string类型的field和value的映射表
                        • hset < key > < field > < value >
                        • hget < key1 > < field >
                        • hmset < key1 > < field1 > < value1 > < field2 > < value2 >...
                        • hexists < key > < field >
                        • hkeys < key >
                        • hvals < key >
                        • hgetall < key >
                        • hincrby < key > < field > < increment >
                        • hsetnx < key > < field > < value >
                        • zset——字符串有序集合
                        • zadd < key > < score1 > < value1 > < score2 > < value2 >...
                        • zrange < key > < start > < stop > [WITHSCORES]
                        • zvrange < key > < start > < stop > [WITHSCORES]
                        • zrangebyscore key min max [ withscores ] [ limit offset count ]
                        • zrevrangebyscore key max min [ withscores ] [ limit offset count ]
                        • zincrby < key > < increment > < value >
                        • zrem < key > < value >
                        • zcount < key > < min > < max >
                        • zrank < key > < value >
                      • 最后
                      相关产品与服务
                      云数据库 Redis
                      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档