【Redis】key键操作与常用数据类型

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【Redis】key键操作与常用数据类型,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、关于key的操作

# 查看当前库所有key
keys *
# 判断某个key是否存在
exists key
# 查看key的类型
type key
# 删除指定的key
del key
# 给指定key设置过期时间,假设我们设置10s
expire key 10
# 查看key还有多少秒过期,-1表示永不过期,-2表示已过期
ttl key
# 命令用于清空当前数据库中的所有 key
flushdb
# 命令用于清空所有数据库中的所有 key
flushall
# 查看当前库中key的数量
dbsize

在这里插入图片描述

二、五大常用数据类型

注意:Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行

1、字符串string

redis中的string的数据结构是简单动态字符串(Simple Dynamic String),是可以修改的字符串,内部数据结构实现类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配

# 添加键值对,如果键值对已存在,那么value会覆盖key对应的原value值
set key value
# 查询键值对
get key
# 将指定的value追加到某个key的value后面
append key addValue
# 获取key对应value的长度
strlen key
# 当key不存在时,设置键值对,如果已存在,那么既不覆盖,也不追加
setnx key value
# 将key对应的数值加1,只能对数字值进行操作,如果不存在,则新增值为1
incr key
# 将key对应的数值减1,只能对数字值进行操作,如果不存在,则新增值为-1
decr key
# 将key对应的数值加减指定大小
incrby/decrby key increment/decrement

在这里插入图片描述

# 同时设置多个键值对
mset key1 value1 key2 value2
# 同时获取多个value
mget key1 key2
# 同时设置多个键值对,仅当所有key都不存在时才会生效,只要有一个key存在,其他几个都不会存进去
msetnx key1 value1 key2 value2
# 获取某个key对应value的部分内容,startIndex为起始下标,endIndex为结束下标
getrange key startIndex endIndex
# 替换某个key对应value的部分内容,从指定下标开始
setrange key startIndex newValue
# 设置键值对并设置过期时间
setex key 过期时间  value
# 以新值覆盖旧值,并且在替换之前打印旧值
getset key value

在这里插入图片描述

2、list列表

  • 单键多值
  • list列表是一个简单的字符串列表,它按照插入元素的顺序进行排序,我们可以把元素放到列表的头部(左边)或者尾部(右边)
  • 它的底层是一个双向链表,对两端的操作性能很高,通过索引下标操作中间节点的性能比较差
  • 列表元素较少时,会使用一块连续的内存进行存储,也就是压缩列表ziplist,当数据较多时,使用多个压缩列表构成一个链表形式quickList
# 从列表左边插入一个或多个值
lpush key value1 value2
# 从列表右边插入一个或多个值
rpush key value1 value2
# 从列表左边/右边取出(取出后删除)一个值,当值被取光后,这个键就消亡了,count不填默认取一个
lpop/rpop key count
# 按照下标查看元素(从左到右),0表示左边第一个,-1表示右边第一个,0 -1表示取所有
lrange key startIndex endIndex
# 按照索引取得元素(从左往右)
lindex key index
# 获取列表长度
llen key
# 在列表某个元素的前面 | 后面插入新值
linsert key before|after value newValue
# 删除列表中n个value(从左往右)
lrem key n value
# 替换列表中指定下标的元素
lset key index newValue
# 从列表key1右边取出第一个值(并从key1中删除该值)放到列表key2左边
rpoplpush key1 key2

在这里插入图片描述
在这里插入图片描述

3、set集合

set和list对外提供的功能类似,特殊之处就是set可以自动去重
redis的set集合使用hash结构,所有的value都指向同一个内部值

# 将一个或者多个member元素添加到key对应的集合中,已经存在的元素将被忽略
sadd key value1 value2
# 取出key对应集合中的所有值
smembers key
# 判断key对应集合中是否存在某个值value,存在返回1,不存在返回0
sismember key value
# 返回key对应的集合中的元素个数
scard key
# 删除key对应集合中的元素(可删除多个)
srem key value1 value2...
# 随机从key对应的集合中吐出(取出后删除)几个值,count不填默认吐出一个
spop key count
# 随机从集合中取出n个值,但是不会从集合中删除
srandmember key n
# 将集合key1中的值value移动到集合key2中
smove key1 key2 value
# 返回两个集合的交集
sinter key1 key2
# 返回两个集合的并集
sunion key1 key2
# 返回两个集合的差集,也就是将key1中同时存在于key2中的元素排除,剩下的元素
sdiff key1 key2

在这里插入图片描述

4、zset有序集合

  • Redis中的zset与set非常相似,都是没有重复元素的集合
  • 但是zset中的每个成员都关联了一个score(评分,它被用来从最低到最高的方式对集合进行排序)
  • zset中元素是唯一的,但是score是可以重复的
# 向zset中塞入元素,可批量
zadd key score1 value1 score2 value2
# 根据下标返回元素,从0开始,如果endIndex为-1,那就返回所有,可选withscores(显示元素的评分)
zrange key startIndex endIndex withscores
# 返回zset中评分处于min和max之间的元素按照评分从小到大显示,可选withscores(显示元素的评分)
zrangebyscore key min max withscores
# 返回zset中评分处于min和max之间的元素按照评分从大到小显示(最大值和最小值需要换位),可选withscores(显示元素的评分)
zrevrangebyscore key max min withscores
# 对元素的评分做一个增量操作,减法直接increment设为负值即可
zincrby key increment value
# 删除集合下指定元素
zrem key value
# 统计该集合中处于某个分数区间内的元素
zcount key min max
# 返回某个元素在集合中的评分排名(从低到高),下标从0开始
zrank key value

在这里插入图片描述

5、hash哈希

  • Redis中的hash是一个键值对集合
  • 它的key是string,value是使用field(域)-value的形式存储的
  • 它特别适合存储对象,类似于Java中的Map<String,Object>
  • hash对应的数据结构有2种,当field-value长度较短且个数较少时为ziplist(压缩列表),否则就是hashtable(哈希表)

结构类似于
在这里插入图片描述

# 赋值
hset key field value
# 获取值,需要用key和field
hget key field
# 批量赋值(上面的hset也可以批量赋值)
hmset key field1 value1 field2 value2
# 查看key中是否存在某个field域
hexists key field
# 查看hash中所有的field
hkeys key
# 查看hash中所有的value
hvals key
# 对hash表中field对应的value进行增量操作,减法直接increment设为负值即可
hincrby key field increment
# 给hash表中的field赋值,只有field不存在时才会生效,如果field存在,则赋值失败,返回0
hsetnx key field value

在这里插入图片描述

如有错误,欢迎指正!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136754.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!