目录
String类型
java
//set,get型
set key value
get key
//设置一个10s后过期的键值对 ex单位是s
set key value ex 10 或者 setex key 10 value
//设置一个10ms后过期的键值对 px单位是ms
set key value px 10 或者 psetex key 10 value
//当不存在key时,才可以存储,相当于唯一插入,nx标识
set key value nx; 或者 setnx key value;
//当存在key时,才可以设置,相当于更新操作,xx标识
set key value xx;
//一次存储或获取多个key,value,减少网络通信次数,mset,mget
mset key1 value1 key2 value2 key3 value3;
mget key1 key2 key3;
加减运算命令
1.针对value为Integer类型
java
incr key //加一操作
decr key //减一操作
incrby key 10 //加10
incrby key -10 //减10 或者使用decrby
2.针对小数
java
incrbyfloat key 1.1
incrbyfloat key -1.1
Hash类型
相当于一种key key value.
java
hset,hget
hset user id 1
hget user id
hexists user id 是否存在KK
hdel user id user name... //删除一个或多个KK
hkeys user //查找K对应的所有K(filed)
hvals user //查找KK对应的所有value
hgetall user //查找K对应的所有key-value键值对
hmset ,hmget //一次设置或查找多个Hash类型的键值对
hmset user id 1 username lisi password 111
hmget user id username password //得到多个value
hlen user //获取指定哈希表中键值对的个数
hsetnx user id //即id这个filed不存在才能插入
//对hash表中的value进行加减运算
hincrby user id 1 //针对Integer类型
hincrbyfloat user money 1.1 //针对小数类型
hstrlen user id //获取value的长度
List类型
本质上是数组,顺序表,redis中的list对数组提供了头插(lpush),头删(lpop),未插(rpush),尾删(rpop)。更像是一个双端队列。使用下标进行操作,元素可以重复,有顺序。
java
lpush key value1 value2 ... //头插
lrange id 0 -1 //查找列表id的所有value 范围查找, -1 表示最后一个元素
lindex key 0 //查找下标为0的value
linsert id before/after 2 10 ///在2的前面或后面插入一个10 如果指定的元素在list中是有多个的。则linsert会从左到右找到第一个元素进行操作。
lpushx,rpushx //当指定List数组存在时,才能插入
lrem id 5 1 //删除元素1,并且删除个数为5个。删除指定元素及元素的个数 List是可以重复的
5的正负代表删除的方向,正数是从左到右找并删除,负数是从右到左找并删除。
ltrim id start end //截取并更新原value,闭区间
lset id 2 10 //将下标为2的元素更新为10 下标越界会报错
llen id //获取指定列表中元素的个数
blpop brpop 带有阻塞性质的出队操作。
在列表有元素的情况下,和lpop,rpop表现是一样的。但如果列表中没有元素,非阻塞版本会立即返回nil,阻塞版本会等待阻塞一段时间timeout,若list中还是没有添加新的元素,才会返回nil。若在等待时间内有了新元素,则会立即返回,解除等待。并且阻塞期间也是可以执行其他命令。当 list 处于阻塞时,这时有多个客户端访问命令,后面list添加新元素了,会先来先到。
并且这个超时等待时间是可以代码手动设置的,如下,获取过期时间为60s
blpop id 60 即pop之前没有元素,会阻塞等待60s,60s内有元素进来,则弹出去,没有就返回空。
Set类型
Set集合中的元素具有唯一性,无序性
java
sadd id 1 2 3 4 5... //向id集合中插入多个元素 元素若重复,只插入一个
smembers id //查看id集合中所有的元素
sismember id 1 //查看id集合中元素1是否存在
spop [count] //删除count个元素的个数
srandmember key [count] //随机从集合中返回一个或多个元素。
smove key1 key2 member //将一个元素member从集合key1中移动到key2中,具体过程是key1中删除这个元素,key2中添加这个元素。
srem key member1,member2... //从集合中一次性删除一个或多个元素
scard key //得到指定集合中元素的个数
SortedSet类型
有序集合,引入了score属性,就是按照这个分数进行排序(升序),元素有序,不重复
zadd key [NX|XX] [CH] [INCR] score member [score member ...] 可以一次性插入多个
XX:更新操作,该元素之前存在才操作
NX:插入操作,即该元素之前不存在才操作
INCR: 修改元素对应的分数做加法/减法运算
java
zrange key 0 -1 [withscores] //查找范围内的元素,有withscores还会返回对应的分数
zrevrange key 0 -1 [withscores] //同上,逆序输出。即降序。
zcard key //获取集合中所有元素的个数
zcount key minscore maxscore //通过一个分数区间,返回在区间内的member个数,闭区间
若想要开区间,加左括号 zcount key (minscore (maxscore
zrangebyscore key minscore maxscore //同上,也是指定一个分数区间,但返回值不同,返回的是集合的元素,而非个数
zpopmax/zpopmin key count // 删除并返回分数最高/最低的count个元素。
bzpopmax/bzpopmin key timeout //带有阻塞性质的删除元素,超时等待,可以设置超时时间
zrank //获取到指定元素的排名(下标)
zrevrank //也是获取到指定元素的下标
zscore key member //根据指定的member查找并返回score分数
zrem key member1 member2.. //删除有序集合中的一个或多个元素
zremrangebyrank //指定一个区间(下标),对这个闭区间内的所有元素进行删除
zremrangebyscore //同上 指定一个区间(分数score),对这个闭区间内的所有元素进行删除
zincrby //给指定的元素member对应的score加一个数字,即修改分数
全局命令
java
flushall //删除所有数据库的所有键值对
keys * //获取所有的key
del key1 key2... // 删除一个或多个key
exists key //是否存在key
ttl key // key的存活时间 单位s -1表示不会过期 -2 表示已经过期
pttl key //key的存活时间 单位ms -1表示不会过期 -2 表示已经过期
expire key 60 //设置key的存活时间 单位s
pexpire key 1000 //设置key的存活时间 单位ms
type key //查看key对应的value的类型 如none(查找不存在的key),string,list,set,zset(压缩set),hash,stream(消息队列)等。
object encoding key //查看key对应value的详细数据类型
集合中的交并补
Clojure
sinter key1 key2 key3 ... //对多个集合求交集 返回交集元素
sinterstore destination key1 key2.. //和上面一样也是求交集,不同的是此操作会将交集元素存放在destination这个指定的集合中,返回的是交集元素的个数。
sunion key1 key2... //对多个集合求并集 返回并集元素
//sinterstore 同上
sdiff key1 key2... //对多个集合求差集 返回并集元素
//sinterstore 同上
redis中的数据库是现成的,用户自己不能进行创建,也不能删除,默认redis中有16个数据库,编号0-15,这些数据库之间是相互独立的,我们之前所操作的string,hash,set,zset等都默认是在0号数据库中的。
select 0 表示选择0号数据库。
dbsize 查看当前所在数据库的所有元素个数
flushdb 删除当前数据库的所有元素 工作中禁用
flushall 删除所有数据库中的所有元素 工作中禁用