Redis常用命令大全

写在前面

各位看官老爷如果本篇文章对你有帮助就给个赞赞赞赞赞吧
在这里插入图片描述

Redis基本数据结构

Stringlistsethashzset,本篇文章我们主要根据这五种基本数据结构的使用来展开当然还有,使用Redis之前我们要知道Redis本身是一个NoSQL数据库,数据一般都用key-value(键值对)来存储

启动redis

切换到redis安装目录下,输入下面语句,就可以启动redis了,也可以设置为开机自动启动

redis-server.exe redis.windows.conf

在这里插入图片描述
启动了redis后,若想操作redis呢?就要新打开一个cmd窗口,win+R输入cmd,切换到redis目录下,输入下面这条语句

redis-cli.exe -h 127.0.0.1 -p 6379

出现下面这个界面则启动成功
在这里插入图片描述

String(字符串)

Redis的String几乎是我们最常使用的,底层数据结构可以看看我这篇文章 String底层详解(sds简单动态字符串)

1.set key value

设置指定key的value

set key(key的名称) value()

示例:设置key:name的value:aliang
在这里插入图片描述


2.get key

查询指定key的value

get key(key的名称)

示例:查询key:name的值
在这里插入图片描述


3.getset key value

查询出某个key的值并设定目标值

getset key(key的名称) value(目标值)

示例:将key:name的值设定为目标值,返回值为原始值
在这里插入图片描述


4.getbit key offset

getbit key(key的名称) offset(偏移量)

获取指定key上指定的offset

首先我们要明确一个概念,我们存储到计算机上的数据都是二进制的,也就是我调用set key指令将数据存到计算机上的时候,它是转换为二进制存储的也就是010101形式的,这个offset表示二进制从左往右数第几个数,从0开始

示例:分别查询key:name的偏移量值

在这里插入图片描述


5.setbit key offset

设置或清除指定key上的offset

setbit key offset

示例:设置key:name 偏移量为0的值,只能设置0和1,要不然会报错,返回值为旧的偏移量值
在这里插入图片描述
通过上面我们可以看到,原本name的值为ALiangXLogic,修改了offset之后呢就变成了\xc1LiangXLogic


6.getrange key start stop

返回指定key值的子字符串

getrange key start(开始) stop(结束)

示例:截取key:name值的子字符串
在这里插入图片描述


7.mget key1 key2 …

同时获取一个或多个key的值

mget key1 [key...]

示例:同时获取key:name、key:age、key:sex的值
在这里插入图片描述


8.mset key1 value1 key2 value2 …

同时设置一个或多个key的值

mset key1 value1 [key value...]

示例:同时设置key:name、key:age、key:sex的值
在这里插入图片描述


9.setnx key value

当且仅当所有给定 key 都不存在才设置key的值,若key存在则返回0

setnx key value

示例:因为key:name存在,所以设置失败
在这里插入图片描述


10.msetnx key value [key value …]

当且仅当所有给定 key 都不存在才设置key的值,可设置多个,若key存在则返回0

msetnx key value [key value ...]

示例:设置多个key的值,如果有一个key存在,则全部都不成功,成功返回1反之返回0
在这里插入图片描述


11.strlen key

返回key的值长度

strlen key

示例:返回key:name所对应值的长度
在这里插入图片描述


12.setex key seconds value

设置一个有时间限制的key-value

setex key seconds(单位为秒) value

示例:设置一个key,它的有效时间为10秒,10秒内可以获取到它的值,10秒后自动销毁这个key-value
在这里插入图片描述


13.psetex key milliseconds value

设置一个有时间限制的key-value,和setex的区别是pasetex毫秒为单位,setex是以为单位


14.setrange key offset value

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始,返回值为修改后字符串的长度

这里需要注意一点,这里的offset是按字符串的长度来计算的

比如ALiang,字符L的offset为1,字符n的offset为4

示例:
在这里插入图片描述


15.incr key

将key存储的数字型加1,若key对应的值为String则会报错

示例:
在这里插入图片描述


16.incrby key increment

将key所存储的数字加上指定值

incrby key increment(指定值)

示例:给count加上10
在这里插入图片描述


17.incrbyfloat key increment

将key所存储的数字加上指定浮点型值

incrbyfloat key increment(指定值)

18.decr key

将key存储的数字减1


19.decrby key increment

将key存储的数字减去指定值

decrby key increment(指定值)

20.append key value

当key已存在,且value的类型为字符串时,会将此value加到原字符串后,如果key不存在,相当于执行set key value语句

append key value(追加字符串)

示例:
在这里插入图片描述


list(列表)

redis中的list可以简单理解为一个最大容量为2^32 - 1 的动态数组

lpush key value [value…]、rpush key value [value…]、lpop key、rpop key

在这里插入图片描述
上面一幅图就是我们使用lpushrpush放入数据时,会从不同的位置放入

举个栗子
在这里插入图片描述

首先执行lpush指令从列表头部塞入一个zhangsan,此时zhangsan在左边第一个,接着再从头部塞入lisilisi目前位于zhangsan左边,在执行rpush指令,从尾部塞入一个wangwu

当我执行完上面的语句时,内部列表的结构应该是下图这样的
在这里插入图片描述
关于lpop和rpop,lpop表示从列表头部拿出数据,rpop表示从列表尾部拿出数据,如果没有数据则返回(nil)


blpop key1 [key2] timeout,brpop key1 [key2] timeout

blpop,从列表左边取出数据;brpop,从列表右边取出数据

这两条指令相比较于lpop和rpop,首先blpop和brpop能设置超时时间,当列表中无数据时,它们俩不会立即返回(nil),而是等待,等待时长为自定义的timeout,其次可以pop多个列表的数据,但是对于多个列表只能返回一个数据,就是pop的第一个列表的第一个数据

示例:
在这里插入图片描述


lrange key start stop

获取指定列表中的元素,strat表示从哪开始,stop表示到哪结束

示例:
在这里插入图片描述


llen key

获取已存在列表的长度,若列表不存在或列表中没元素则返回0

示例:
在这里插入图片描述


lindex key index

通过索引来获取列表特定的值

示例:
在这里插入图片描述


ltrim key start stop

将列表中索引下标位于start-stop之间的元素保存下来,其它的直接删除

示例:
在这里插入图片描述


set(集合)

redis的set有几个特点:

1.集合成员唯一,不可重复

2.无序性

3.通过哈希表实现

下面我直接使用表格的形式来给大家展现基本命令的使用

指令含义示例
sadd key value [value…]向set集合中插入一个或多个成员在这里插入图片描述
srem key value [value…]移除set集合中的一个或多个成员在这里插入图片描述
scard key获取set集合中成员数在这里插入图片描述
sdiff key1 [key…]返回第一个集合于后面集合的差集在这里插入图片描述
sdiffstore destination key1 [key…]将第一个集合与后面其它集合的差集存到destination(一个新的集合)中在这里插入图片描述
sismember key value判断value是否为set集合的成员,存在返回1,不存在返回0在这里插入图片描述
smembers key返回set集合中的所有对象在这里插入图片描述
srandmenber key count [count … ]随机返回集合中一个或多个对象在这里插入图片描述
sinter key1 [key …]返回给定集合的交集在这里插入图片描述
sinterstore destination key1 [key …]将给定集合的交集存到destination(一个新的集合)在这里插入图片描述
sunion key [key …]返回指定集合的并集在这里插入图片描述
sunionstore destination key [key …]将指定集合的并集存到destination(一个新的集合)在这里插入图片描述

hash(哈希表)

首先我们要知道hash的数据结构,在redis中 key - value,这里的value为hash,而hash内部的数据结构也是key - value的形式,所以在redis里,对hash的数据结构其实是这样的 key - hash(key - value)这样的

下面为redis里hash常用的指令

指令含义示例
hmset key field value [field value …]设置一个或多个hash值在这里插入图片描述
hmget key field [field …]根据一个或多个field获取hash表中一个或多个值在这里插入图片描述
hgetall key获取此hash表中所有的key-value在这里插入图片描述
hkeys key获取此hash表中所有的key在这里插入图片描述
hvals key获取此hash表中所有的value在这里插入图片描述
hsetnx key field value当且仅当字段field不存在,则为其设置value在这里插入图片描述
hincrby key field incrment为hash表中字段为field的整数值加上incrment,返回值为计算后的值在这里插入图片描述
hlen key返回hash的key - value对数在这里插入图片描述
hexists key field返回hash指定的字段是否存在,存在返回1,不存在返回0在这里插入图片描述
hdel key field [field …]删除hash中一个或多个key在这里插入图片描述
hscan key cursor [MATCH pattern] [COUNT count]迭代hash内部的key - value 对 ,count 默认为 10在这里插入图片描述

zset(有序集合)

它和前面的Set有什么不同呢?其实有序集合内部就是维护了一个score,来维护它的有序,我们可以用它来做一个排行榜,一个人访问一次就让它的score + 1

我来给大家举个栗子
在这里插入图片描述
我在将字段添加到集合中的时候,在前面还给每个字段附上了一个分数,也就是说,我的排序是根据所定义的分数来的,所以维护了此集合的有序性

下面为常用字段

指令含义示例
zcard key返回集合中的成员个数在这里插入图片描述
zcount key min max返回指定集合中分数范围内的成员在这里插入图片描述
zincrby key incrment member向集合中指定的成员原本的分数加上incrment,返回值为计算后的分数在这里插入图片描述
zrange key start stop按分数从小到大返回member在这里插入图片描述
zrevrank key member返回成员的排名,按分数从大到小排在这里插入图片描述
zscore key member返回集合内指定成员的分数在这里插入图片描述
zrank key member返回集合内指定成员的索引值在这里插入图片描述
zrem key member [member …]移除集合内一个或多个成员的信息,移除n个返回n,移除失败返回0在这里插入图片描述

总结

上面只是5种基本数据结构的基本指令,更多指令请参考redis指令大全

转载请标注原作者,谢谢你们的支持,能给个小心心吗?

完成:2021/4/07 22:52 ALiangXLogic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉淀顶峰相见的PET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值