Redis各数据类型的常用命令操作


Redis是以键值对的方式存放数据的。

一、Redis的key键操作

以下命令中的key表示的是键的名字。

命令描述
keys *查看当前库所有的key
exists key判断某个key是否存在
type key查看key的类型
del key删除指定的key数据
unlink key根据value选择非阻塞删除
仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作中
expire key 10为指定的key设置过期时间,10表示10秒
ttl key查看还有多少秒过期,-1表示永不过期,-2表示已经过期

数据库的操作:

命令描述
select n切换数据库(0——15)
dbsize查看当前数据库的key的数量
flushdb清空数据库 (慎用)
flushall清空所有数据库 (就算跑路最好也别用)

二、Redis操作String命令

String是二进制安全的类型,可以包含任何数据,包括图片和序列化的对象。Redis中字符串的value值最大可以是512M。

命令描述
set key value加一个键值对(key: value),
或更新键值对的值(键已存在的情况下)
get key通过key(键)获取value(键的值)
append key value加一个键值对(key: value)
或在值后边追加value(键已存在的情况下)
strlen key获取值的长度
setnx key value键不存在,新建一个键值对(key: value),存在则不操作
incr <key>将key中存储的数字增1(只能对数字操作)
decr <key>将key中存储的数字减1(只能对数字操作)
incrby <key> <step>将key中存储的数字加step(只能对数字操作)
decrby <key> <step>将key中存储的数字减step(只能对数字操作)

同时设置多个值:

命令描述
mset key1 value1 key2 value2 … …同时设置多个键值对
mget key1 key2 …同时获取多个键的值
msetnx key1 value1 key2 value2同时设置多个键值对,当且仅当所有给定的key都不存在的时候

注意:mset、mget 和 msetnx 命令具有原子性,有一个失败则失败。
其他命令:

命令描述
getrange key startIndex endIndex获取key从startIndex到endInde的值(前包后包)
setrange key index value在key的第index位插入value
setes key time value设置键值对的同时,设置过期时间为time秒
getset key newValue获取key的旧值,然后将key的值改为newValue

三、Redis操作List命令

Redis的List 指的是 一键多值。 底层是快速链表(quicklist),其实就是链表和ziplist(压缩列表)的结合。我们可以将元素插入到头部或者尾部。他对两端的操作性很高,通过索引和下标的操作中间节点的性能较差。

命令描述
lpush key value1 value2 … valuen从左边插入一个或多个值
rpush key value1 value2 … valuen从右边插入一个或多个值
lpop key从左边弹出一个值,没有值的时候,键就没了
rpop key从右边弹出一个值,没有值的时候,键就没了
rpoplpush key1 key2弹出key1左边的值放到key2的右边
lrange key start stop按照索引从start到stop到key中取值(左闭右闭)
从0到-1表示取所有的值
lindex key index按照索引下标获取元素
llen key获取列表的长度
linsert key before value newValue找到key中的value,并在这个value前面插入newValue
linsert key after value newValue找到key中的value,并在这个value后面插入newValue
lrem key n value从左往右删除n个value值
lset key index value将下标为index的值替换为value

注意:
1、lpush从左边插入值,第一个插入的值最后会被推到最右边,最后一个插入的值会在最左边。(rpush则反之)
2、只有rpoplpush,没有什么lpoprpush, lpoplpush之类的。
3、只有lrange,没有rrange。其中,第一个参数是起始位,最后一个参数数末位,正数表示从左往右第m个数(从0开始计数),负数表示从右边数第n个数。如果使用lrange -1 -2 ,那么结果为empty。(没法通过两个负数实现“rrange”)

四、Redis操作Set命令

Set数String类型的无序集合,底层是一个value为null的Hash表,增删查的时间复杂度为O(1)。
Set和List的区别在于:Set是自动排序的。

命令描述
sadd key value1 value2 … valuen将所有还未存在的value添加到集合key中
smembers key取出key集合所有的值
sismember key value判断集合key中是否包含value,有则返回1,没有返回0
scard key返回key集合元素的个数
srem key value1 value2 … valuen删除key集合中的某个或某几个元素
spop key随机从key集合中弹出一个值(会删除弹出数据)
srandmember key n随机从key集合中返回n个值(不删除返回数据)
smove source destination value将source中的value值移动到destination集合。
sinner key1 key2返回 集合key1 和 集合key2 的交集(key1和key2都有)
sunion key1 key2返回 集合key1 和 集合key2 的并集(key1中有或key2中有)
sdiff key1 key2返回 集合key1 和 集合key2 的差集(key1中有,key2中没有)

五、Redis操作Hash命令

Redis的Hash是一个键值对集合,是一个string类型的field和value的映射表;特别适合用于存放对象。类似于Java中的Map<String ,Object>。
存储示意图:(user是string;id、name和age是field;1、张三、20数value)。
在这里插入图片描述

命令描述
hset key field value给key集合中的 field 赋值 value
hget key field从key集合中取出field的value值
hmset key field1 value1 field2 value2 …给key集合中的field1赋值value1,field2赋值value2
hexists key field查看key集合中是否有field
hkeys key列出key集合中所有的field值
hvals key列出key集合中所有的value值
hincrby key field increment为集合key的field的value值加1
hsetnx key field value当且仅当field不存在的时候,为field赋值value。

Hash类型对应的数据结构有两种:ziplist(压缩列表),hashtable(哈希表)。当field-value 长度较短的时候,使用的数ziplist,否则使用hashtable。

六、Redis操作Zset。

Redis的Zset与普通集合set非常类似。是一个没有重复元素的字符串的集合。

不同之处是,有序集合的成员都被关联了一个评分(score),通过这个评分将集合中的成员按照从低到高级进行排序。其中,成员是唯一的,但是评分可以重复。

由于元素是有序的,因此,我们可以通过评分(score) 或者 次序(position) 来获取一个范围的元素。

访问有序集合的中间元素也是非常快的。因此,我们可以使用有序集合作为一个没有重复成员的智能列表。

命令描述
zadd key score1 value1 score2 value2 …添加一个或多个元素及其score值
zrange key start stop [WITHSCORES]返回key中下标在start到stop之间的元素
加了WITHSCORES,那么分数会一起返回
zrangebyscore key min max返回key中score在min到max之间的元素(从小到大排序)
zrevrangebyscore key max min返回key中score在min到max之间的元素(从大到小排序)
zincrby key increment value为集合中某元素的score加上increment
zrem key value删除key集合中的value值
zcount key min max统计该集合,score处于min到max之间的元素个数
zrank key value返回某个元素在集合中的排名(从0开始)

Zset底层使用了两个数据结构:
1、hash:关联元素value和权重score,保障元素value的唯一性,可以通过value找到对应的score。
2、跳跃表:给元素value排序,根据score的范围获取元素列表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值