大数据学习之Redis,十大数据类型的具体应用(一)

news2024/11/24 9:11:02

目录

3. 数据类型命令及落地应用

3.1 备注

3.2 Redis字符串(String)

单值单value

多值操作

获取指定区间范围内的值

数值增减

获取字符串长度和内容追加

分布式锁

getset(先get后set)

3.3 Redis列表(List)

简单说明

单key 多value

3.4 Redis哈希(Hash)

KV模式不变,但是V是一个键值对


3. 数据类型命令及落地应用

3.1 备注

命令不区分大小写,而key是区分大小写的

永远的帮助命令,help @类型

help @

3.2 Redis字符串(String)

单值单value
set key value

SET命令有EX、PX、NX、XX以及KEEPTTL五个可选参数

  • EX seconds:以秒为单位设置过期时间

  • Px milliseconds: 以毫为单位设置过期时间

  • EXAT timestamp:设置以秒为单位的UNIX时间戳所对应的时间为过期时间

  • PXAT milliseconds-timestamp:设置以毫秒为单位的UNIX时间戳所对应的时间为过期时间

  • NX:键不存在的时候设置键值

  • XX:键存在的时候设置键值

  • KEEPTTL:保留设置前指定键的生存时间

  • GET:返回指定键原本的值,若键不存在时返回ni1

最常用的是

set key value

keepttl

get key
多值操作

设置多个key value

mset k1 v1 k2 v2 k3 v3

获取多个值

mget k1 k2 k3
获取指定区间范围内的值
  • getrange/setrange

#获取全部
getrange 0 -1
set k1 abcd1234
setrange k1 1 xxyy
#输出
axxyy234
数值增减

一定是数字才能加减

  • incr key / decr key

  • incrby key / decrby key

set k1 100
get k1 #输出100
incr k1 #输出101
set k1 100
get k1 #输出100
incrby k1 3 #输出103
incrby k1 5 #输出108
set k1 100 
get k1 #输出100
decr k1 #输出99
set k1 100
get k1 #输出100
decrby k1 5 #输出95
获取字符串长度和内容追加
  • strlen key

  • append key value

set k1 abcd
get k1 #输出“abcd”
strlen k1 #输出 (integer)4
append k1 xxxx
get k1 #输出 “abcdxxxx”
分布式锁
  • setnx key value

  • setex(set with expire)键秒值/setnx(set if not exist)

getset(先get后set)

3.3 Redis列表(List)

简单说明

一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。

left、right都可以插入添加;

如果键不存在,创建新的链表:

如果键已存在,新增内容;

如果值全移除,对应的键也就消失了。

  • 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差

单key 多value

微信公众号订阅的消息 一个人 订阅了多个公众号 中有多个消息

  • lpush / rpush / lrange

lpush list1 1 2 3 4 5 #输出 5
rpush list2 11 22 33 44 55 #输出 5
type list1 #输出 list
lrange list1 0 -1 #输出 5 4 3 2 1
lrange list2 0 -1 #输出 11 22 33 44 55
  • lpop / rpop

lpush list1 1 2 3 4 5 #输出 5
lrange list1 0 -1 #输出 5 4 3 2 1
lpop list1 #输出 5(从左边弹)
lrange list1 0 -1 #输出 4 3 2 1
rpop list1 #输出 1(从右边弹)
lrange list1 0 -1 #输出 4 3 2
  • lindex,按照索引下标获得元素的个数(从上到下)

lrange list1 0 -1 #输出 4 3 2
lindex list1 0 #输出 4
  • llen,获取列表中元素的个数

llen list1 #输出 3
llen list2 #输出 5
  • lrem key 数字N 给定值v1

    删除N个值等于v1的元素

    list允许有重复的元素

del list1
lpush list1 1 1 1 1 2 2 2 3 3 4 5 #输出 11
lrang list1 0 -1 #输出 5 4 3 3 2 2 2 1 1 1 1 
lrem list1 3 1
lrang list1 0 -1 #输出 5 4 3 3 2 2 2 1
  • ltrim key 开始index 结束index,截取指定范围的值后在赋值给key

lrang list1 0 -1 #输出 5 4 3 3 2 2 2 1
ltrim list1 4 7 #输出 ok
lrang list1 0 -1 #输出 2 2 2 1 
  • rpoplpush 源列表 目的列表

    移除列表的最后一个元素,并将该元素添加到另一个列表并返回

lrang list1 0 -1 #输出 2 2 2 1 
lrang list2 0 -1 #输出 11 22 33 44 55
rpoplpush list1 list2 #输出 1
lrang list1 0 -1 #输出 2 2 2
lrang list2 0 -1 #输出 1 11 22 33 44 55
  • lset key index value

lrang list1 0 -1 #输出 2 2 2
lset list1 1 mysql #输出 ok
lrang list1 0 -1 #输出 2 mysql 2
  • linsert key before / after 已有值 插入的新值

lrang list1 0 -1 #输出 2 mysql 2
linsert list1 mysql java
lrang list1 0 -1 #输出 2 java mysql 2

3.4 Redis哈希(Hash)

KV模式不变,但是V是一个键值对

Map < String , Map < Object , Object > >

  • hset / hget / hmset / hgetall / hdel

hset user:001 id 11 name zs age 25 #输出 3 
hget user:001 id #输出 11
hget user:001 name #输出 zs
hmset user:001 id 12 name ls age 26 #输出 ok
hmget user:001 id name age #输出 12 ls 26
hgetall user:001 #输出 id 12 name ls age 26
hdel user:001 age #输出 1
hgetall user:001 #输出 id 12 name ls
  • hlen

hgetall user:001 #输出 id 12 name ls
hlen user:001 #输出 2
  • hexists key 在key里面的某个值的key

hexists user:001 name #输出 1
hexists user:001 score #输出 0 
  • hkeys / hvals

hkeys user:001 #输出 id name
hvals user:001  #输出 12 ls
  • hincrby / hincrbyfloat 对数据相关的操作

hest user:001 age 25 score 99.5 #输出 2
hgetall user:001 #输出 id 12 name ls age 25 score 99.5
hincrby user:001 age 2 #输出 27
hgetall user:001 #输出 id 12 name ls age 27 score 99.5
hincrbyfloat user:001 score 0.5 #输出 100
hgetall user:001 #输出 id 12 name ls age 27 score 100
  • hsetnx

    不存在 输出1 并添加

    存在 输出0

hsetnx user:001 class 1 #输出 1 
hsetnx user:001 class 1 #输出 0

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

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

相关文章

网络协议与攻击模拟_11DHCP欺骗防护

开启DHCP 监听 ip dhcp snooping 指定监听vlan ip dhcp snooping vlan 1 由于开启监听后&#xff0c;交换机上的接口就全部变成非信任端口&#xff0c; 非信任端口会拒绝DHCP报文&#xff0c;会造成正常的DHCP请求和响应都无法完成。 现在是请求不到IP地址的&#xff0c;…

2023美赛A题之Lotka-Volterra【完整思路+代码】

这是2023年的成功&#xff0c;考虑到曾经付费用户的负责&#xff0c;2024年可以发出来了。去年我辅导队伍数量&#xff1a;15&#xff0c;获奖M为主&#xff0c;个别F&#xff0c;H&#xff0c;零S。言归正传&#xff0c;这里我开始分享去年的方案。由于时间久远&#xff0c;我…

IDEA2023打开新项目默认SDK变成了17

问题描述 项目安装了2个sdk版本&#xff0c;jdk8和jdk17 自从升级IDEA版本到2023以后&#xff0c;每次打开新项目&#xff0c;sdk都被默认选择成了jdk17, 每次都得手动修改 &#xff08;File--Project Structure&#xff09;&#xff0c;超级麻烦。 没有用的解决方法 以下这…

机器学习系列-2 线性回归训练损失

机器学习系列-2 线性回归&训练损失 学习内容来自&#xff1a;谷歌ai学习 https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hlzh-cn 本文作为学习记录1 线性回归&#xff1a; 举例&#xff1a;蝉&#xff08;昆虫物种&…

设计模式篇---备忘录模式

文章目录 概念结构实例总结 概念 备忘录模式&#xff1a;在不破坏封装的前提下捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;像这样可以在以后将对象恢复到原先保存的状态。 就好比我们下象棋&#xff0c;下完之后发现走错了&#xff0c;想要回退…

STM32——感应开关盖垃圾桶

STM32——感应开关盖垃圾桶 1.定时器介绍 软件定时 缺点&#xff1a;不精确、占用CPU资源 void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); }定时器工作原理 使用精准的时基&#xff…

ONLYOFFICE:兼顾协作与安全的开源办公套件

文章目录 前言ONLYOFFICE是什么&#xff1f;ONLYOFFICE的特点多人在线协同灵活集成安全可靠跨平台和设备扩展丰富 实操注册登录编写文档插件安装智谱CopilotDraw.io 新版强势功能显示协作者头像插件 UI 界面更新 总结 前言 随着数字化时代的到来&#xff0c;越来越多的文档处理…

第38期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

Redis核心技术与实战【学习笔记】 - 7.Redis GEO类型 - 面向 LBS 应用的数据类型

前言 前面&#xff0c;介绍了 Redis 的 5 大基本数据类型&#xff1a;String、List、Hash、Set、Sorted Set&#xff0c;它们可以满足绝大多数的数据存储需求&#xff0c;但是在面对海里数据统计时&#xff0c;它们的内存开销很大。所以对于一些特殊的场景&#xff0c;它们是无…

Java笔记 --- 四、异常

四、异常 Java.lang.Throwable Error Exception&#xff08;异常&#xff09; 异常的作用 异常的处理方式 JVM默认的处理方式 捕获异常&#xff08;自己处理&#xff09; try里面没有出现异常&#xff0c;就不会运行catch里面的代码 如果出现多个异常&#xff0c;需要多个c…

山石防火墙安装使用

山石虚拟防火墙&#xff0c;可以安装在vmware workstation上 安装步骤&#xff1a; 1、新建虚拟机&#xff0c;选择典型。 2、稍后安装 3、操作系统版本选择“Other Linux 3.x kernel 64-bit”。 4、配置虚拟机名称和位置 5、自定义硬盘容量 6、点击自定义硬件 7、此处可以选…

Python编辑开发 --- pycharm pro 中文

PyCharm Pro是一款专业的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发。它为Python开发者提供了丰富的功能和工具&#xff0c;使得Python编程变得更加高效和便捷。PyCharm Pro具有智能代码编辑功能&#xff0c;能够自动完成代码、快速导航至…

爆了!sealos 三天时间支持 1000 个帕鲁私服

Sealos 的帕鲁私服模板从第一天发布之后就起了 100 多个私服&#xff0c;第二天直接上到 500 多个&#xff0c;第三天直接上千&#xff0c;还在加速增长中。来讲讲我们只用一个晚上怎么做到上线一个专属可用区的&#xff0c;还有一些帕鲁实践让我对云有的一些新的思考。 Sealos…

2024年AI全景:趋势、预测和可能性

欢迎来到 2024 年人工智能和技术的可能性之旅。 在这里&#xff0c;每一个预测都是一个潜在的窗口&#xff0c;通向充满创新、变革、更重要的是类似于 1950 年代工业革命的未来。 20 世纪 50 年代见证了数字计算的兴起&#xff0c;重塑了行业和社会规范。 如今&#xff0c;人工…

第二十回 虔婆醉打唐牛儿 宋江怒杀阎婆惜-FreeBSD改变分区大小

阎婆找到宋江&#xff0c;劝宋江和阎婆惜和解。 宋江无奈跟阎婆惜喝酒&#xff0c;想趁阎婆下楼之机离开&#xff0c;但被阎婆用门锁拦住。宋江无奈留宿&#xff0c;但是两人还是不愉快&#xff0c;宋江五更天就起来了。 宋江走的匆忙&#xff0c;没有带招文袋。阎婆惜拿到招文…

maven helper 解决jar包冲突方法

一 概要说明 1.1 说明 首先&#xff0c;解决idea中jar包冲突&#xff0c;使用maven的插件&#xff1a;maven helper插件&#xff0c;它能够给我们罗列出来同一个jar包的不同版本&#xff0c;以及他们的来源&#xff0c;但是对不同jar包中同名的类没有办法。 1.2 依赖顺序 …

动态住宅IP可以用来注册亚马逊电商吗?

注册亚马逊店铺可以用动态IP&#xff0c;只要是独立且干净的网线就没问题&#xff0c;亚马逊规则要求一个IP地址只能出现一个亚马逊店铺&#xff0c;若使用不当会导致关联账户。所以现在非常多人使用指纹浏览器搭配代理IP 固定ip可以给我们的账户带来更多的安全&#xff0c;要知…

【java核心-IoC(控制反转)和DI(依赖注入)及AOP(面向切面编程)】

java核心-IoC&#xff08;控制反转&#xff09;和DI&#xff08;依赖注入&#xff09;及AOP&#xff08;面向切面编程&#xff09; 控制反转&#xff08;IoC&#xff09;依赖注入&#xff08;DI&#xff09;面向切面编程&#xff08;AOPAOP的应用场景包括但不限于&#xff1a;以…

使用Eclipse搞Android项目报错

相信现在都没什么人还会用Eclipse来开发的了。 不过安装完后&#xff0c;打开Eclipse会提示我的Jdk版本不符合 --------------------------- Incompatible JVM --------------------------- Version 1.8.0_391 of the JVM is not suitable for this product. Version: 17 or g…

2024年热销游泳耳机推荐,主流游泳耳机哪个品牌更好?

游泳作为一项全面锻炼身心的运动&#xff0c;长期参与对个人健康大有裨益。被誉为“运动之王”的游泳&#xff0c;不仅能避免常规运动可能带来的关节损伤&#xff0c;而且无需高超的专业姿势和健身技巧&#xff0c;适合各年龄段的人群。然而&#xff0c;在现今的游泳运动中&…