Redis常见数据类型_Redis通用指令

Redis常见数据类型

redis本身就是一个Map结构, 所有数据都采用key:value的形式, redis中的数据类型指的是value的类型, key部分永远是字符串
在这里插入图片描述

string(类似Java String)

  • string基本操作:
set key value //存储数据
get key value //获取数据
del key value //删除数据
mset key1 value1 key2 value2 key3 value3 ... //存储多个string
mget key1 key2 key3 ...//获取多个key对应的string, 若value不存在返回nil(null)
strlen key //获取value的长度
append key value //在原始的信息的基础上, 附加信息, 若key不存在, 则新建
  • 针对数字型value的自增, 自减(自增, 自减的操作是建立在value必须是数字, 不能是其他字符串)
incr key //key对应value进行自增1
incrby key increment //key对应的value进行自增increment个大小, 此处的increment必须是整数, 不能是浮点数
incrbyfloat key increment //与上一个命令一样, 此处增长的浮点数
decr key //key对应的value进行自减1
decr key increment //key对应的value自减increment个大小
  • 设置数据具有生命周期
setex key seconds value //设定当前key-value的生命周期为seconds秒, 当TTL为0时, 该键值对自动销毁
psetex key milliseconds value //设定生命周期为milliseconds

注: value最大的存储容量为512MB, 数值计算最大范围就是Long的范围.

hash(类似Java HashMap)

内部结构图:
在这里插入图片描述

  • hash类型数据的基本操作
hset key field value //添加hash数据
hget key field//获取key对应的hash value数据
hgetall key //获取key对应hash表中所有数据, 包括所有field-value
hdel key field1 field2 ... //删除key对应的hash数据
hmset key field1 value1 field2 value2 field3 value3...//添加多个hash数据
hmget key field1 field2 field3 //通过field获取对应value数据
hlen key //获取hash表中字段个数
hexists key field //判断field属性是否存在
  • hash类型数据扩展操作
hkeys key //获取哈希表中所有属性名
hvals key //获取哈希表中所有的属性值

在这里插入图片描述

  • 对hash表中数字型value进行增长操作
hincrby key field increment //value增长increment大小
hincrbyfloat key field increment //value增长变为浮点数

在这里插入图片描述
注:

1.hash表中的value只能存储字符串, 不能存储其他类型的数据(例如: list, hash等), 禁止套娃.
2.hash表可存储2^32-1个键值对
3.避免使用hash存储大对象
4.使用hgetall是取出对饮key中所有hash数据, 若数据较多, 会造成性能问题

list(类似Java LinkedList)

内部结构图:
在这里插入图片描述
list的内部结构就是一个双向链表, 类似于Java中的LinkedList

  • list类型数据基本操作
lpush key value1 value2 [value3...] //从list左端插入数据, 数据一个一个往左端进入
rpush key value1 value2 [value3...] //从list右端插入数据, 数据一个一个往右端进入
lrange key start stop //获取索引从start~stop之间的数据, 索引默认从0开始, length-1结束
lindex key index //获取指定index下的数据
len key //获取list长度
lpop key //从左端移除数据
rpop key //从右端移除数据
lrem key count value //删除key中指定count个数的value, list中可能存在value重复
  • list扩展操作
//从左端拿数据, 确保可以在seconds时间内拿到数据, 若该时间内拿不到数据就返回null
blpop key seconds 
brpop key seconds //从右端拿数据, 效果同上//确保在seconds时间内从source中rpop拿数据, 然后将数据lpush到target中, 超出时间限制, 则不执行操作
brpoplpush source target seconds 

注:

1.list中数据都是string, 也不能嵌套其他数据类型, 数据容量为2^32-1个元素
2.可以使用list模拟队列, 栈等数据结构
3.可以使用 lrang key 0 -1 来获取key中所有的元素

set(类似Java HashSet)

内部结构图:
在这里插入图片描述
set内部结构就是hash的结构, 但是set只使用key来存储(key不允许重复), 效果与Java中的HashSet一样

  • set基本操作
sadd key member1 member2... //添加数据
smembers key //获取key对应所有member数据
srem key member1 member2... //删除key对应的member数据
scard key //获取key对应的member数量
sismember key member //判断member是否包含在key中, 类似于contains
srandmember key [count] //随机获取key对应的member数据, 可以在后面指定member个数
spop key [count] //随机获取key对应的member数据, 并将其移除, 可指定member个数
  • set扩展操作
sinter key1 key2 ...//获取多个set的交集
sunion key1 kye2 ...//获取多个set的并集
sdiff key1 key2...//获取多个set的差集sinterstore target key1 key2...//获取多个集合的交集, 并将其存入target中
sunionstore target key1 key2...//获取多个集合的并集, 并将其存入target中
sdiffstore target key1 key2...//获取多个集合的差集, 并将其存入target中smove source target member //将source中的member数据移动到target中

sortedset(类似Java TreeSet)

内部结构:
在这里插入图片描述
相比于set, 多增加了score属性, 在sortedSet中, Redis根据score进行排序操作.

  • sortedSet基本操作
zadd key score1 member1 score2 member2 score3 member3...//添加数据
zrange key start stop [withscores] //获取索引start~stop之间的数据 withscores代表结果可以输出scores
zrevrange key start stop [witchscores] //反向获取
zrem key member1 member2 //删除key对应的member数据zrangebyscore key min max [withscores] [limit] //按条件获取, min,max代表score范围, limit与mysql的limit效果一样
zrevrangebyscore key max min [withscores] //反向获取zremrangebyrank key start stop //按照索引位置进行删除
zremrangebyscore key min max //按照score大小范围进行删除zcard key //获取集合数据总量
zcount key min max //按照score范围获取//求交集, 并将返回的结果存入target中, numberkeys指定当前key的数量
zinterstore target numkeys key [key...]
//求并集
zunionstrore target numkeys key [key]
  • sortedSet扩展操作
zrank key member //获取对应member的索引
zrevrank key member //获取反向的索引
zscore key member //获取对应member的score值
zincrby key increment member //对member进行增长increment大小

注:

score的存储大小为64位
score可以存储double类型, 但是也可能存在精度丢失
sortedSet底层还是set, 因此不能添加重复的member, 出现member重复, 则后一个的score会将前一个的score覆盖

Redis基本数据的应用场景

Tips 1:redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性
Tips 2:redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
Tips 3:redis应用于各种结构型和非结构型高热度数据访问加速
Tips 4:redis 应用于购物车数据存储设计
Tips 5:redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计
Tips 6:redis 应用于具有操作先后顺序的数据控制
Tips 7:redis 应用于最新消息展示
Tips 8:redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐,大V推荐等
Tips 9:redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索
Tips 10:redis 应用于同类型不重复数据的合并、取交集操作
Tips 11:redis 应用于同类型数据的快速去重
Tips 12:redis 应用于基于黑名单与白名单设定的服务控制
Tips 13:redis 应用于计数器组合排序功能对应的排名
Tips 14:redis 应用于定时任务执行顺序管理或任务过期管理
Tips 15:redis 应用于及时任务/消息队列执行管理
Tips 16:redis 应用于按次结算的服务控制
Tips 17:redis 应用于基于时间顺序的数据操作,而不关注具体时间

Redis通用指令

Key的通用操作

  • key的基本操作
del key //删除指定key
exists key //判断key是否存在
type key //获取key对应的value数据类型
  • key扩展操作
expire key seconds //设置key的有效时间为seconds秒
pexpire key milliseconds //设置key的有效时间为milliseconds毫秒
//key的过期时间设置效果与上面一样, 区别在于下面这个用于unix平台设置
expireat key seconds //设置key的有效时间为seconds秒
pexpireat key milliseconds //设置key的有效时间为milliseconds毫秒
ttl key //获取key的有效时间(秒单位)
pttl key //获取key有效时间(毫秒单位)
persist key //将当前key的时效性切换到永久
keys pattern //查询key, *代表所有, ?代表匹配任意一个字符, []代表匹配其中某一个字符
rename key newKey //为key改名
renamex key newKey //Unix平台改名
  • 数据库通用操作
    Redis将数据库分为16个, 各个数据库之间相互独立
select index //切换数据库, index代表数据库下标
quit //退出
ping //发送消息, 效果与网络中ping一样
move key db //将key移动到另外一个db中
dbsize //数据库大小
flushdb //当前数据库进行清除操作
flushall //所有数据库进行删除操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我关注的学习公众号

在这个激烈竞争的社会,职场上还有“一招鲜”么?面对35岁的“魔咒”,提升自我的路很多,学习是其中最为捷径的一条。只有不断学习新知识,才能保持进步。今天为大家整理了8个公众号,分别为各个领域的佼佼者&am…

如何让开关打开_安卓手机如何打开USB调试模式

点击上方“手机互联” 关注我吧!什么是USB调试模式?USB调试模式是 安卓手机提供的一个用于开发工作的功能。使用该功能可在设备和安卓手机之间复制数据、在移动设备上安装应用程序、读取日志数据等等。默认情况下,USB 调试模式是关闭的&#…

Redis持久化_Redis事务_Redis删除策略

Redis持久化 Redis包含3中持久化方案: RDB, AOF, RDB与AOF混合使用 RDB RDB: 将内存中数据生成快照形式, 将其保存到.rdb文件中, 关注点是数据 使用命令执行RDB过程 在保存.rdb文件之前还需要修改redis.conf配置文件, 修改项如下: dbfilename dump.rdb //配置.rdb文件名, …

第一次线下活动总结

公众号建立有了一段时间了,今天是我们筹划的第一次线下聚会活动,活动发起人是公众号的一个读者,是我们的前辈,也是这次活动的赞助商,非常感谢,支付了聚餐了费用,这次第一届活动,当然…

初学者选黑卡还是微单_零基础,一篇读懂单反和微单

许多小白在选购相机时,常常会纠结选微单还是选单反。那么这次就来一篇通俗讲解:单反和微单有什么区别?谁更好?应该怎么选择?一、单反和微单有什么区别?在了解单反和微单的区别之前,我们先要了解…

Redis核心配置_Redis高级数据类型使用

Redis核心配置 服务端配置 daemonize yes|no //服务器是否已守护进程方式运行 bind 127.0.0.1 //绑定主机 port 6379 //设置端口 databases 16 //设置数据库数量 loglevel debug|verbose|notice|warning //设置日志级别 logfile 端口号.log //设置日志文件名 maxclients 1 //…

xcode8注释快捷键失效问题

1. 首先按上图的指示,查看Add Documentation后面的快捷键是不是optioncommand/。 2. 如果发现不是默认的快捷键,可按快捷键command,打开Xcode偏好设置窗口,选中Key Bindings,搜索Add Documentation,便可修…

vant组件搜索并选择_Vant Weapp - 有赞出品的免费开源微信小程序组件库

轻量可靠的小程序UI组件库,主流移动组件库 Vant 的微信小程序版本。Vant Weapp 和 Vant 的区别之前推荐过的移动端web组件库 Vant 是 Vue.js 版本的,其对内承载了有赞所有核心业务,对外有十多万开发者在使用,一直是业界主流的移动…

走了,又回来了

今天换了个大的办公室,从100平增加到了300平,从宝安到南山,从旧环境到新环境,不是新的开始,是新的环境和心情。突然有点感慨,那时候从科技园出发,跟HP从深圳坐高铁去广州,在广州小蛮…

Flink-Java版单词计数(批处理流处理)

创建工程 pom.xml文件依赖如下: <dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.10.1</version></dependency><!--依赖的一些组件需要 Scala 环境…

怎么做批注_BIM平台是什么?有何用?怎么用?

原标题&#xff1a;BIM平台是什么&#xff1f;有何用&#xff1f;怎么用&#xff1f;随着BIM技术的深入应用&#xff0c;我们也不再拘泥于单单BIM软件的使用&#xff0c;在BIM技术的广泛应用之下&#xff0c;BIM平台也逐渐成为了BIM技术的最佳体现&#xff0c;也成为了众多工程…

Flink并行度优先级_集群操作常用指令_运行组件_任务提交流程_数据流图变化过程

Flink并行度优先级(从高到低) sum(1).setParallelism(1) env.setParallelism(1) ApacheFlinkDashboard任务添加并行度配置 flink-conf.yaml并行度配置 注: 处理输入输出时, 并行度默认为 1Flink集群常用指令 提交任务 run: 代表执行; c: 指定入口类; p: 并行度; host, post:…

招银网络笔试java_最新!!招银网络科技Java面经,整理附答案

作者&#xff1a;榨汁机2号 链接&#xff1a;https://www.nowcoder.com/discuss/1640193月12号现场面试的&#xff0c; 感觉好像所有人有3面的样子。到目前也没有消息&#xff0c;有消息的吱一声&#xff0c;让我早点死了这个心…..一面 1 Java的八大基本类型byte、short、int、…

FlinkAPI_Environment_输入源_算子转化流程

Flink Environment getExecutionEnvironment() 根据当前平台, 获取对应的执行环境, 若未设置并行度, 使用 flink-conf.yaml 中的并行度配置, 默认 1. StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment();createLocalEnviroment() 创建本地…

第2章 Linux内核模块

宏内核和微内核继续前面第一章的知识&#xff0c;虽然有点啰嗦&#xff0c;既然啰嗦了就继续啰嗦下去吧&#xff0c;也是给第一章的内容增加解释。我们知道内核如果按种类来划分的话&#xff0c;可以分为宏内核和微内核&#xff0c;微内核是一个比较先进的内核&#xff0c;我不…

的注册表怎么才能删干净_油烟净化器怎么清洗才能清理干净呢?

油烟机的净化器的主要功能是过滤厨房里的油烟&#xff0c;因为它总是处理油烟&#xff0c;所以清洗净化器很麻烦&#xff0c;那么如何清洗呢&#xff1f;经常清洗油烟净化器是很有必要的&#xff0c;但清洗起来很麻烦&#xff0c;清洗起来也不容易。今天&#xff0c;我想告诉大…

ado 字符串变量

这次变量主要针对 Mfc 的 Cstring 类型的变量&#xff08;前面VC 链接Access 数据库 插入变量到表&#xff09; 思路; 1 把cstring 类型 转为 string 2 string 转 char 数组 3 sprintf 写入数组 string 转 char 数组函数[cpp]view plaincopyprint?char* zhuanhuan(std::strin…

周立功先生和他的AWorks团队招聘

我之前写的一篇文章&#xff0c;介绍了周立功先生&#xff0c;我记得那篇文章的阅读量非常多&#xff0c;也让我迎来一段小高潮&#xff0c;随着时间的推移&#xff0c;慢慢的增加了我对周立功先生的了解&#xff0c;我们很多人&#xff0c;像我吧&#xff0c;工作的时候&#…

mongodb python 大于_Python中使用MongoDB详解

作者&#xff1a;Zarten知乎专栏&#xff1a;Python爬虫深入详解知乎ID&#xff1a; Zarten简介&#xff1a; 互联网一线工作者&#xff0c;尊重原创并欢迎评论留言指出不足之处&#xff0c;也希望多些关注和点赞是给作者最好的鼓励 &#xff01;介绍MongoDB是一种面向文档型的…

这不是商业互吹,是学习的宝藏

学习如逆水行舟&#xff0c;不进则退&#xff1b;只有坚持不断的学习,才能保持进步。今天给大家精心挑选的这几个优质的公众号&#xff0c;在行业深耕已久&#xff0c;相信大家一定会有所收获&#xff0c;感兴趣的可以关注一下。互联网架构师 号主985计算机硕士毕业&#xff…