redis常用命令与总结

前言

  开发中经常用到redis,几乎都把redis与缓存画上等号了。自己开中也只是用到了string和hash类型,感觉对redis一知半解。所以本着探究一下redis常用的命令,来仔细学习一下redis。学习参考:菜鸟redis教程
 $emsp;本篇博客不适合一次性阅读并记忆所有命令,适合使用的时候适当查询。

目录

  1. 常用的基础命令
  2. string常用命令
  3. hash常用命令
  4. list常用命令
  5. set常用命令
  6. sorted list常用命令

命令中key指代操作的存放的主键名【自取】,value指代存放到该主键的值【自定义】

常用的基础命令

#登录远程redis服务 redis-cli -h host -p port -a password
#host对应的ip如127.0.0.1  post对应的端口号 6379【实际端口号请以confg文件为准】 password 密码
redis-cli -h 127.0.0.1 -p 6379 -a 1234

#中文乱码问题 链接时追加 --row  若还是乱码,请检查你的终端编码方式,与key-value存放的编码是否相同
reids-cli --row

#切换数据库 select number  number指代第几个数据库【默认0-15】
select 0

#判断键值是否存在 exists key
exists users::1

#模糊查询数据库 查询所有 keys * 正则匹配 keys regx
keys *
keys ^[0-9]*$  #匹配数字

#删除键值 del key
del users::1

#设置过期时间 pexpire key milliseconds【毫秒】 expire key seconds【秒为单位】
pexpire users::1 6000   #6秒后,key为users::1的键自动删除
expire users::1 6       #6秒后,key为users::1的键自动删除

#查看到期时间 TTL key  以秒为单位  PTTL key 以毫秒为单位
TTL users::1 
PTTL users::1

#取消过期时间
persist users::1

#移动key值 move key db 从数据库A移动到B
move key B

#返回key值的类型 type key
type users::1

#修改key值的名称 renameoldname newname
rename users::1 user::1

#序列号键值 dump key
dump users::!

string常用命令

#存放键值 set key value 
set users::1 123

#获取key的值 get key
get users::1

#获取key之中指定位数的值 getrange key start end  参考数组 
getrange users::1 0 1  #获取到的值为12

#获取一个或多个key的值 mget key1 key2
mget users::1 users::2  #同时获得users::1与users::2的值

#存放key同时,设置超时间是 set key ex second【秒】或 set key px milliseconds【毫秒】
set users::1 1234 ex 3  		#设置key为users::1,value为1234,超时时间为3秒
set users::1 1234 px 3000		#设置key为users::!,value为1234,超时间为3000毫秒【3秒】

#只有在 key 不存在时设置 key 的值 setnx key value
setnx users::1 1234   #当users::1不存在时,才存放

#返回字符串长度 strlen key  参考c语言
strlen users::1   

#同时设置多个 key value  mset key1 value1 key2 value ....
mset users::1 a users::2 b

#同时设置多个 key value 当且仅当key不存在时才存放,只要有一个key存在,所有插入都失败
#msetnx  key1 value1 key2 value2 ...
msetnx users::1 a users::3 c

#在指定key的末尾上追加新字符串,类似于字符串拼接  append key value
append users::1 5     #如原本users::1存放值为1234,执行后为12345

#指定key,自增 【int型才可以】 incr key 类似于key++,incrby key 4 类似于key += 4 
incr users::1   incrby users::1 4

#指定key,自减 【int型才可以】 decr key 类似于key--,decrby key 2 类似于key -= 2
decr users::1   decrby users::1 2


hash常用命令

#存放hash类型键值对
#存放单个hset key filed value
#当且仅当filed不存在时才存放  hsetnx key filed value
#存放多个hmset key1 filed1 value1 filed2 value2 .....
hset users::1 name tom		#若name存在,则覆盖name值,不存在则新建
hmset users::1 name bob
hmset users::1 age 18 gender 男
#很遗憾,hash没有批量存放filed不能存在的字段方法

存放格式样例
在这里插入图片描述

#删除一个或多个hash值  hdel key filed1 ...
hdel user::1 name gender

#判断指定字段是否存在  hexists key filed
hexists users::1 name

#获取指定字段的值  hget key filed
hget users::1 age

#获取所有hash中key的字段与值   hgetall key
hgetall users::1

#获取所有hash表中的字段 hkeys key
hkeys users::1	#只查询key

#获取所有hash表中当前key的字段个数
hlen users::1    #只返回个数

#获取指定hash表key中的字段的值    hmget key filed1 filed2 ...
hmget users::1 name age 

#获取hash当前key的所有值  hvals key
hvals users::1

#将指定的字段的值自增 hincrby key filed increment  类似于 filed += increment
hincrby users::1 age 7

list常用名

redis中的list类型,是个由链表构成的堆。list的操作,既符合堆的先入后出原则,则符合链表的操作原则。

#入栈 lpush key value 或同时入栈多个 lpush key value1 value2 ...
lpush users::1 1
lpush users::1 2 3 4

#查看堆中指定下标存放value    lrange key start end
lrange users::1 0 10

此时,堆中拥有的值与顺序
redis常用命令与总结_第1张图片

#移除堆的首元素[首元素出堆],并设置超时时间,遇到阻塞时,在超时时间内等待,直到取到值 blpop key timeout  
blpop users::1 1000	#可以理解为,移除当前堆,最左侧的元素

#移除堆的最末元素[末元素出堆] brpop key timeout
brpop users::1 1000 #可以理解为,移除当前堆,最右侧元素

现在堆中存放的元素
redis常用命令与总结_第2张图片

#移除堆首元素,不设置超时间 lpop key
lpop users::1	#最左侧元素
#移除堆末元素,不设置超时间 rpop key
rpop users::1	#最右侧元素
#取堆中指定下标的元素 lindex key index
lindex users::1 0	#仅仅只取值,而不出栈

#获取堆的当前长度 llen key
llen users::1

#向指定已存在的key的堆中,从堆的左侧入堆 lpushx key value
lpushx users::1 5   #向key为users::1的堆首插入值5,每次只能操作一个元素

#向指定已存在的key的堆中,从堆的右侧入堆 rpushx key value
rpushx users::1 6	#向key为users::1的堆首插入值6,每次只能操作一个元素

#通过索引,向指定key的堆中存放值 lset key index value
lset users::1 1 45 	#向key为uses::1,下标为1【第二个元素】,放入值45.若下下标大于堆长度,则插入失败

#将A堆中堆末元素出栈,并插入到B堆首元素中   rpoplpush A B
rpoplpush users::1 users::2		#若B不存在,则创建B并将value存放到B的堆首
#将A堆中堆末元素出栈,并插入到B堆首元素中,并设置超时等待时间,超过时间若还未移动成功则不进行操作
#rpoplpush A B timeout
rpoplpush users::1 users::2 1000

#保留指定下标区间元素  ltrim key start end
ltrim users::1 2 5 	#只保留从左起第2-5个元素

set常用命令

#向set中存放值 sadd key value【一次一个】或sadd key value1 value2 ..
sadd users::1 redis
sadd users::1 mysql mongodb  #若set中已存在存放的value,则自动去重,只插入不存在的value

#查看当前key的set中的所有元素  smembers key
smembers users::1

#查看当前key的set的长度   scard key
scard users::1

#判断成员是否是当前key中的成员  sismember key member
sismember users::1 redis

#随机返回当前key中,set集合一个元素 srandmemeber key 
srandmember users::1
#随机返回当前key中,set集合一个或多个元素  srandmember key count
srandmember users::1 2	#返回users::1中的两个元素

#随机移除当前key中,set集合一个元素    spop key
spop users::1
#随机移除当前key中,set集合一个或多个元素 spop key count
spop users::1 2


#返回A集合与B集合元素的差异,即B中存在而A不存在的元素    sdiff A B
sdiff users::1 users::2
#返回A集合与后续并集的元素差异,即并集中存在,而A不存在的元素  sdiff A B C ...
sdiff users::1 uses::2 users::3
#返回所以集合的差集,并存放到N中
sdiffstore N A B C ..    #返回A、B、C集合的差集,并将差集存放到N中

#返回所有集合的交集   sinter A B ..
sinter users::1 users::2    #返回集合users::1与users::2所共有部分
#返回所有集合的交集,并将交集存放到 N中    sinterstore N A B..
sinterstore N A B      #返回集合A与集合B的共有部分,并将共有部分存放到N集合中

sorted list常用命令

sorted list有序链表,相比于hash,sorted list多出了一个score。
redis常用命令与总结_第3张图片
score决定了排序的顺序,score越大排序越靠后。

#向有序表中插入元素  zadd key score value
zadd user::1 1 redis
#向有续集中插入多个元素 zadd key score1 value1 score2 value2 score3 value ...
zadd user::1 2 monggodb 3 mysql 4 mysql 	#最后结果如上图,当重复插入相同value时,默认取最后一个值

#获取有序表当前key的元素个数  zcard key
zcard user::1  	

#获取有序表指定score的成员  zcount key min max
zcount user::1 1 3

#获取有序表中,指定成员的索引  zrank key member
zrank user::1 mysql 	#最后得到结果为3

#获取有序表中,指定成员的分数   zsocre key member
zsocre user::1 mysql

#通过索引,获取有序表中指定索引的成员 zrange key start stop
zrange user::1 1 6

#通过分数,获取有序表中指定分数的成员 zrangebyscore key min max
zrangebyscore user::1 2 5

你可能感兴趣的:(redis)