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

目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pve web无法访问

一、问题描述 我这边修改了网络,导致ip发生了变更,pve网页版直接登不上了,ssh又可以登录。 二、解决方法 首先确认是不是网络的问题&#xff0c;我这边是内网&#xff0c;有多个路由器&#xff0c;笔记本连的是一个网段&#xff0c;pve又是一个网段&#xff0c;通过ping&…

生信学院|02月02日《云端设计一体化平台—3DEXPERIENCE》

课程主题&#xff1a;云端设计一体化平台—3DEXPERIENCE 课程时间&#xff1a;2024年02月02日 14:00-14:30 主讲人&#xff1a;郭俊辰 生信科技 解决方案顾问 1、云产品发展趋势 2、3DExperience产品的介绍 3、3DExperience DEMO演示 请安装腾讯会议客户端或APP&#xff…

芒果tv数据采集与可视化实现

摘 要 一个爬虫从网上爬取数据的大致过程可以概括为&#xff1a;向特定的网站服务器发出请求&#xff0c;服务器返回请求的网页数据&#xff0c;爬虫程序收到服务器返回的网页数据并加以解析提取&#xff0c;最后把提取出的数据进行处理和存储。因此&#xff0c;一个爬虫程序可…

[Vue3] useRoute、useRouter

useRoute 返回当前路由地址。相当于在模板中使用 $route。必须在 setup() 中调用。用于在组件中获取当前路由的信息&#xff0c;返回一个包含路由信息的对象。这个函数适用于那些不需要监听路由变化的场景&#xff0c;只是获取当前路由信息的静态数据。 useRouter 返回 route…

模拟实现哈希表 - HashMap(Java版本)

目录 1. 概念 2. 冲突-概念 3. 冲突-避免 4. 冲突-避免-哈希函数设计 5. 冲突-避免-负载因子调节 ⭐⭐⭐⭐⭐ 6. 冲突-解决 6.1 冲突-解决-闭散列 6.2 冲突-解决-开散列/哈希桶 ⭐⭐⭐⭐⭐ 7. 冲突严重时的解决办法 8. 模拟实现 1. 概念 顺序结构以及平衡树中&#…

蓝桥杯---牌型种数

小明被劫持到X赌城&#xff0c;被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张)&#xff0c;均匀发给4个人&#xff0c;每个人13张。这时&#xff0c;小明脑子里突然冒出一个问题&#xff1a;如果不考虑花色&#xff0c;只考虑点数&#xff0c;也不考虑自己得到的牌的先后…

HTM标签 - 2

HTM标签 超链接标签 超链接标签&#xff1a;<a> 文本或图片 </a> 用法1&#xff1a;在页面中使用超链接标签跳转到另一个页面 属性描述href页面跳转的地址&#xff0c;相对地址或绝对地址&#xff1b;###&#xff1a;空连接&#xff1b;#&#xff1a;跳转到当前…

vue3+threejs+koa可视化项目——实现登录注册(第三步)

文章目录 ⭐前言&#x1f496;往期node系列文章&#x1f496;threejs系列相关文章&#x1f496;vue3threejs系列 ⭐koa后端登录注册逻辑&#xff08;jwt&#xff09;&#x1f496; koa登录注册 ⭐vue3前端登录注册权限控制&#x1f496; 登录页面&#x1f496; 注册页面 ⭐总结…

AcWing.883.高斯消元解线性方程组

输入一个包含 n 个方程 n 个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含 m 个方程 n 个未知数的线性方程组示例&#xff1a; 输入格式 第一行包含整数 n n n。 接下来 n n n 行&#xff0c;每行包含 n 1 n1 n1 个实数&#xff0c;表…

01背包问题 动态规划

01背包问题 动态规划 01背包问题 动态规划写了点代码 C#实现程序运行结果代码和程序已经上传 01背包问题 动态规划 很有意思的问题。 写了点代码 C#实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Ta…

二进制漏洞挖掘之ret2text栈溢出

栈溢出产生的主要原因是对一些边界未进行严格检查&#xff0c;攻击者可以通过覆盖函数的返回地址执行任意代码。栈溢出漏洞主要的利用方式是ROP&#xff08;Return Oriented Programming&#xff0c;返回导向编程&#xff09;&#xff0c;通过覆盖返回地址&#xff0c;使程序跳…

【01】Linux 基本操作指令

带⭐的为重要指令 &#x1f308; 01、ls 展示当前目录下所有文件&#x1f308; 02、pwd 显示用户当前所在路径&#x1f308; 03、cd 进入指定目录&#x1f308; 04、touch 新建文件&#x1f308; 05、tree 以树形结构展示所有文件⭐ 06、mkdir 新建目录⭐ 07、rmdir 删除目录⭐…

C++进阶(八)红黑树

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、红黑树的概念二、红黑树的性质三、红黑树结构四、红黑树的插入操作1、情况一2、情况二3、…

vue3开发,axios发送请求是携带params参数的避坑

vue3开发,axios发送请求是携带params参数的避坑&#xff01;今天一直报错&#xff0c;点击新增购物车&#xff0c;报错&#xff0c; 【Uncaught (in promise) TypeError: target must be an object】。查询了网上的资料说的都不对。都没有解决。最终还是被我整明白了。 网上网…

力扣之2621.睡眠函数

/*** param {number} millis* return {Promise}*/ async function sleep(millis) {return new Promise(resolve > setTimeout(resolve, millis)); }/** * let t Date.now()* sleep(100).then(() > console.log(Date.now() - t)) // 100*/ 这样的异步休眠功能在实际应用…

页面通过Vue进行整体页面不同语言切换 i18n库

目录 引入 如何做到 下载i18n库 构建整体翻译文件结构 语言包文件 i18n配置文件 把i18n挂载到vue实例上 添加按钮点击事件切换语言 引入 我们现在有这样一个要求,我们想要对我们开发的网页进行国际化操作,也就是我们不仅要有中文,还要有英文等。用户可以随时进行不同语言…

DB之家:数据库开发工程师的衣柜(云原生时代数据库性能优化点子集合)

基础数据结构 布隆过滤器&#xff1a; modular bloom filter 减少布隆过滤器所需要的内存。参考文献&#xff1a;Mun, J. H., Zhu, Z., Raman, A., & Athanassoulis, M. (n.d.). LSM-Trees Under (Memory) Pressure. 基础算法 字符串压缩 FSST算法 利用向量化计算加…

多线程代码案例之单例模式

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 多线程代码案例之单例模式 单例…

【Node-RED】node-red-contrib-opcua-server模块使用(3)

【Node-RED】node-red-contrib-opcua-server模块使用&#xff08;3&#xff09; 前言node-red-contrib-iiot-opcuanode-red-contrib-lativnode-red-contrib-nupmes 前言 在前面博文【Node-RED】node-red-contrib-opcua-server模块使用&#xff08;1&#xff09;我们有提及过&a…

ICMPv6报文解析及NAT处理

ICMPv6报文概述 参考RFC4443和RFC2460 ICMPv6报文是IPv6在internal control management protocol&#xff08;ICMP&#xff09;的基础之上做了一些改动&#xff0c;得到了ICMPv6协议&#xff0c;IPv6的next_header为58。 Message general format 每条ICMPv6消息之前都有一个…