redis基础命令
select切换数据库:一共16个库(索引从0开始)
dbsize查看当前数据库的key的数量
flushdb:清空当前库
Flushall;通杀全部库
key 相关的命令
-
keys *:查看当前数据库所有的key
命令:keys *
-
exists key的名字:判断某个key是否存在
命令:exists key的名字
(存在:返回1,不存在:返回0) -
move key db:移动key到指定的库(相当于剪切,一个库移动到另一个库)
命令:move key db
例如:把0号库的 key为a1 的数据移动到1号库 -
expire key 秒钟 和 ttl key:设置过期时间,和查看过期时间
命令:ttl key
查看还有多少秒过期,-1表示永不过期,-2表示已过期
命令:expire key 数字
为给定的key设置过期时间
例:给a1 设置过期时间为10秒,并查看还有多长时间过 -
type key:查看你的key是什么类型
命令:type key
Redis 数据类型及其相关命令
Redis字符串(String)
redis 的string类型是单值单value
-
set/get/del/append/strlen
命令:-
set key value
: 往redis存值 -
get key
:取出对应的key的值 -
del key
:删除对应的key和值 -
append key value
: 往key 的值中追加数据(相当与字符串拼接) -
strlen key
:对应字符串的长度
-
-
Incr/decr/incrby/decrby (一定要是数字才能进行加减)
命令:-
Incr key
:每次增加1 -
decr key
: 每次减1 -
incrby key num
:key对应的数按num数量递增 -
decrby key num
:每次按num数量的递减
-
-
getrange/setrange
-
getrange key startIndex endIndex
:获取指定区间的值包含开始和结束索引(getrange key 0 -1:表示返回所有) -
setrange key startIndex 值
:从指定位置设置值(覆盖了原来的值)
-
-
setex(set with expire)/setnx(set if not exist)
-
setex key 过期时间 值
:设置值并设置过期时间 -
setnx key 值
:如果不存在才插入值
-
-
mset/mget/msetnx
-
mset key1 v1 key2 v2 key3 v3
:一次可以插入多个值 -
mget key1 key2 key3
:一次取多个值 -
msetnx key1 v1 key2 v2 key3 v3
: 如果插入的key不存在才插入,只要有一个存在不插入
-
-
getset(先get再set)
getset key value:先取出先前的值,然后在原来的值覆盖
Redis列表(List)
介绍:
redis 的string类型是单key多value (value 可以重复)
底层是一个双向链表,可以往左右插入值
存储类型:
key ----> 双向链表
命令:
- lpush/rpush/lrange (链表头表示左,链表尾表示右)
-
lpush key v1 v2 v3...
: 往链表的左边(头)插入多个值 -
rpush key v1 v2 v3...
:往链表的右边(尾)插入多个值 -
lrange key startIndex endIndex
:取出链表对应范围的值,从头开始取(注意:如果endIndex=-1的话,表示取到链表的最后,)
-
- lpop/rpop
lpop lkey:从链表头取出链表元素(取一个少一个)
rpop lkey:从链表尾部取出链表元素(取一个少一个) - lindex,按照索引下标获得元素
lindex lkey index
:取出对应下标的值 - llen 获取存储元素的个数
llen lkey
:对应链表的值的个数 - lrem lkey 删N个value
lrem lkey num(要删除的数量) value
:删除链表中num数量的value(当有多个相同的value时,我们可以删除多个vlaue)
如:lrem list02 2 3:表示从list02链表中删除2个数量的3 - ltrim key 开始index 结束index,截取指定范围的值后再赋值给key
ltrim lkey startInde endIndex
:从链表中截取指定范围的值,然后把该值有重新赋值给该链表(原来链表的值将会删除) - rpoplpush 源列表 目的列表
rpoplpush 源列表 目的列表
:从源链表的尾部位置取出一个元素,然后把该元素从目标链表的头部插入,
- lset key index value
lset key index value
:修改链表对应索引的值 - linsert key before/after 值1 值2
linsert lkey before/after v1 v2:在v1值的 前面/后面 插入值v2
Redis集合(Set)
介绍:
set类型是单key 多value (value 不许重复)
命令:
-
sadd/smembers/sismember
-
sadd skey v1 v2 v3
:往set集合里面添加数据,如果有重复值,只能插入一个 -
smembers skey
:取出该集合的所有值 -
sismember skey value
:判断value在该set中是否存在,0:不存在;1:存在
-
-
scard,获取集合里面的元素个数
scard skey: 获取集合里面的元素个数
-
srem key value 删除集合中元素
srem key value:删除对应集合指定的值
-
srandmember key 某个整数(随机出几个数)
srandmember skey num:从set集合中随机取出num数量的值
-
spop key 随机出栈
spop skey:随机从集合中弹出一个元素
-
smove key1 key2 在key1里某个值 作用是将key1里的某个值赋给key2
smove key1 key2 在key1里某个值 :
-
数学集合类(差集:sdiff, 交集:sinter, 并集:sunion)
sdiff skey01 skey02:求差集(即在skey01除去skey01和skey02的交集)
sinter skey02 skey02:交集,skey02和skey02都有的值
sunion skey01 skey02:并集,skey02和skey02值的合并
Redis哈希(Hash)
介绍:
Redis哈希(Hash):单key 单value,但是value是一个k,v键值对
命令:
-
hset/hget/hmset/hmget/hgetall/hdel(重要)
-
hset hkey k v
:插入一个键值对(k,v) -
hget hkey k1
:从hkey中的键值对中取出key 是k1 的值 -
hmset hkey k1 v1 k2 v2...
:一次插入多个键值对 -
hmget hkey k1 k2 k3...
:一次取出多个对应key的值 -
hgetall hkey
:取出hkey 对应的所有的k,v键值对 - hdel hkey k1:删除 k1键值对
-
-
hlen
hlen hkey :求出hkey对应的k,v键值对的个数
-
hexists
hexists hkey k
:在hkey的所有k,v键值对中是否存在键是k的键值对 -
hkeys/hvals
hkeys hkey
:获取hkey中所有键值对的 键hvals hkey
:获取hkey中所有键值对的 值 -
hincrby/hincrbyfloat
-
hincrby hkey k num
:给 k 对应的值 自增 num的数 (v = v + num) -
hincrbyfloat hkey k float
: 给 k 对应的值 自增 float的小数数 (v = v + float)
-
-
hsetnx
hsetnx hkey k v
:往hkey 里面添加k,v键值对,当hkey 没有重复k就插入成功,否则就插入失败
Redis有序集合Zset(sorted set)
介绍:
Zset 在set基础上,加一个score值。
之前set是k1 v1 v2 v3,
现在zset是k1 score1 v1 score2 v2
命令:
-
zadd/zrange
-
zadd zkey score1 v1 score2 v2 score3 v3
:往set里面放数据,在每个数据的前面都有一个对应的 score(排名值) - zrange zkey startIndex endIndex:取出指定范围set里面的值,不带score
- zrange zkey startIndex endIndex withscore:取出指定范围set里面的值,带score
-
-
zrangebyscore key [(]开始score [(]结束score
-
zrangebyscore zkey [(]开始score [(]结束score
:表从对应的zkey集合中取出 指定范围score 的值 (([(]表示可选值 , ( :表示不包含)) -
zrangebyscore zkey 开始score 结束score limit num1 num2
:表从对应的zkey集合中取出 指定范围score 的值,从开始下标步num1 开始,取出num2数量的值 (相当于分页)
-
-
zrem
zrem zkey v:删除zkey对应的value值,包括score
-
zcard,zcount ,zrank ,zscore
-
zcard zkey
:获取zkey对应集合的size大小 -
zcount zkey startScore endScore
:统计zkey集合对应scoreq区间的size个数 -
zrank zkey v
:获取v对应的下标 -
zscore zkey v
:获取v对应的score
-
-
zrevrank
zrevrank zkey v:逆序获得v下标值 (最尾部开始,最尾部的下标为0)
-
zrevrange (倒序遍历)
zrevrange zkey startIndex endIndex:倒序遍历,与zrange相反
-
zrevrangebyscore zkey 结束score 开始score
zrevrangebyscore zkey 结束score 开始score:从集合尾部的score开始往前面score 结束,返回对应的值