redis相关指令
1、启动Redis服务:redis-server.exe --service-start
2、启动Redis客户端(默认端口:6279):redis-cli.exe -h 127.0.0.1 -p 6379
3、ping命令:可以使客户端向Redis服务器发送一个ping,如果服务器正常运作,会返回一个pong。通常用于测试客户端与服务器连接是否仍然生效
ping "hello word"
4、Redis默认16个库,编号0到15
常见指令:
dbsize:查看当前库中key的个数
select dbnumber:切换到指定的库(0-15)、默认0号库
flushdb:清空当前库中的数据
5、Key相关命令:
exists key:测试指定key是否存在,返回1表示存在
del key1 key2…keyN:删除给定key,返回删除key的数目,0表示key都不存在
keys pattern:返回符合条件的key
key *:返回所有key
6、Redis数据类型-String(默认)
①set key value:设置key对应的值为String类型的value,如果key存在则覆盖原有值
set name zhangsan
setnx key value:同上,如果key已经存在,则不做操作直接返回
setnx name zhangsan
②get key:获取key对应的string值,如果不存在返回nil
get name
mget key1 key2…keyn:一次获取多个值,不存在则返回nil
mget name address email
getset key value:设置key的值,并返回key的原有值,如果key原来又值,则覆盖原有值
getset address nanning
③mset key1 value1…keyN valueN:一次设置多个值,返回1表示所有值都设置了,失败返回0表示没有任何值被设置
mset name zhangsan address nanning mobile 110000000
msetnx key1 value1 key2 value2…keyN valueN:同上,但是不会覆盖已经存在的key
④incr key:对key的值做++操作并返回新的值
set number 0
incr number
incrby key integer:同incr,加指定值
incrby number 6
⑤decr key:对可以的值做–操作,decr一个不存在的key,则设置key为-1
decr number
decr numbers
decrby key integer:同decr,减去指定值
decr number 4
⑥append key value:给指定的key的字符串追加value,返回新的字符串长度
append name san
⑦substr key start end:返回截取过的key的字符串值,但不修改原有字符串的值
substr name 1 3
⑧setbit key offset value
setbit对key所存储的字符串值,设置或清除指定偏移量上的值
key就是当前需要设置的key
offset表示从左到右的偏移量(从0开始取值)
value取值为0或1
-把a变成b
a 97 0110 0001
b 98 0110 0010
set choice a
setbit choice 6 1
get choice
setbit choice 7 0
get choice
第一天登录:>setbit student:001:login 0 1
第二天登录:>setbit student:001:login 1 0
查询001学生第二天是否登录:>getbit student:001:login 1 :0
查询001学生一共登录了多少天:>bitcount student:001:login
查询001学生1月登录了多少天:>bitcount student:001:login 0 30
7、List相关命令:Redis中的list为双向链表,每个子元素都是String类型的;list即可以用作栈,也可以用作队列
①添加元素(返回当前list的长度,如果列表不存在,则不做操作)
将一个或多个值插入到列表头部:lpush key value value1
lpush namelist zhangsan lisi wangwu
在列表中添加一个或多个值:rpush key value value1
rpush namelist zhangsan lisi wangwu
②返回列表中指定区间内的元素命令:
lrange namelist 0 -1
0表示列表的第一个元素,1表示显示所有元素
-1表示最后一个元素,-2表示倒数第二个元素
0 -1表示显示所有元素
③linsert key before|after pivot value:pivot表示需要插入的节点的值
linsert namelist before lisi xiaoming
④lset设置list中指定下标的元素值:lset key index value(index表示节点位置,从0开始计数)
lset namelist 0 liangyuee
⑤lrem key count value
lrem:从key对应list中删除|count|个和value相同的元素
count>0时,按从头到尾的顺序删除
count<0时,按从尾到头的顺序删除
count=0时,删除全部
lrem namelist 2 zhangsan // 删除两个zhangsan的元素
⑥弹出元素(返回当前list的长度)
从头部弹出key的值(删除):lpop key
从尾部弹出key的值(删除):rpop key
⑦从一个list的尾部弹出插入到另一个list的头部:rpoplpush source destination
rpoplpush namelist myname //将namelist尾部的元素弹出插入到myname当中
⑧获取list列表长度:llen key
通过索引获取列表中的元素:lindex key index
lindex namelist 1
8、set相关命令:set集合支持集合的增减操作,也支持集合的并集、交集、差集等运算;本质上是通过哈希实现,因此添加、删除、查找的复杂度都是0(1)
①给集合中添加一个或多个元素:sadd key value1 value2(set中不允许存放重复元素)
add students zhangsan lisi wangwu
删除集合中一个或者多个元素:srem key value1 value2
srem students wangwu zhangsan
查询集合中有多少个元素:scard key
获取集合中的所有元素:smembers key
判断成员是否在集合中存在:sismember key value
sismember students zhangsan
随机删除集合中的一个或多个元素值:spop key count
spop students 3
②返回给定集合之间的差集,差集的结果来自前面的key1:sdiff key1 key2 key3
sdiff class1 calss2 calss3
③sinter命令返回给定所有集合的交集,不存在的集合key被视为空集,当给定集合中有一个空集的时候,结果也为空集
sinter class1 class2 class3
④sunion命令返回给定集合的并集
sunion class1 class2 class3
9、zset相关命令:sorted set是有序集合
①每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序
有序集合的成员是唯一的,但分数(score)却可以重复
②zadd向有序集合添加一个或多个成员,如果该元素已经存在,则根据score更新该元素的顺序:zadd key score1 member1 score2 member2
zadd chengji 100 zhangsan 77 lisi 99 wangwu
③zrem用于移除有序集中的一个或多个成员,不存在的成员将被忽略
zrem key member1 member2 member3
zrem chengji zhangsan
④zincrby命令如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment。
zincrby key increment member
zincrby chengji 50 wangwu
⑤zrank返回名称为key的zset中member元素的排名(按score从小到大排序)即下标
zrank key member
zrank chengji zhangsan
⑥zrevrank返回名称为key的zset中member元素的排名(按score从大到小排序)即下标
zrevrank key member
zrevrank chengji zhangsan