redis常用五大数据类型

news2024/11/24 3:03:16

目录

Key

字符串String

        常用命令

列表List

        常用命令

集合Set

        常用命令

Hash哈希

        键值对集合

        有序集合Zset

 Redis新数据类型


Key

set key value...添加key
keys *查看当前库中所有的key
exist key该key是否存在
type keykey的类型
del key删除key
unlink key根据value选择非阻塞删除(没有直接删除)
expire key time(数字)

为给定的key设置过期时间(秒)

ttl key 查看还有多少秒过期(-1表示永不过期,-2表示已过期)

        select 切换数据库

        dbsize 查看当前数据库key的数量

        flushdb 清空当前库

        flushll 通杀全部库 

字符串String

        常用命令

set <key> <value>添加或覆盖键值对数据
get key查询对应键值
append key value在后面继续添加(不是覆盖)
strlen key获取值的长度
setnx key value

只有key不存在,才能设置成功

incr key将key中存储的数字值增1(只能对数字类型操作,如果为空,新增值为1)
decr key将key中存储的数字值减1
incrby key 数字自定义步长
decrby key 数字自定义步长

mset key1 value1 key2 value2

同时设置一个或多个key-value对
mget key1 value1 key2 value2同时获取一个或多个key-value对
msetnx key1 value1 key2 value2同时设置一个或多个key-value对,当且仅当所有的key都不存在,有一个存在都失败
getrange key 起始位置 终止位置获取值的范围,类似substring 前后都包
setrange key 起始位置 value用value覆写key所存储的字符串值
setex key 过期时间 value设置值的时候就可以设置过期时间
getset以新换旧,设置新值的同时获得旧值

        数据结构

                        简单的动态字符串

列表List

                  单键多值

        常用命令

lpush/rpush k1 v1 v2 v3

从左边或者右边插入一个或多个键值对 (头插法,尾插法)
lpop/rpop <key>从左边或右边吐出一个值,值光键亡
lrange <key> <start> <end> 按照索引下标获得元素(从左到右)

rpoplpush <key1> <key2>

从key1列表右边吐出来一个值,插到key2列表左边
lindex <key> <index>按照索引下标获得元素
llen <key>获取列表长度
linsert <key> before/after <value> <newvalue>在value的前面/后面加上newvalue
lrem key n value从左边删除n个value
lset key index value将列表key下标为index的值替换成value

        底层结构

                quicklist快速列表(双向链表)

集合Set

                与list类似,但是set中元素不可以重复,无序集合,O(1)

        常用命令

sadd key value value将一个或多个元素member添加到集合key中,已存在的将被忽略
smembers key取出集合中的所有值
sismember key value判断集合key中是否存在value值,1或0
scard key返回该集合元素的个数
srem key value1 value2删除集合中的某个元素
spop key随机取出一个值
srandmember key n随机取出n个值,但不会从集合中删去
smove把一个值从一个集合中移到另一个集合
sinter key1 key2返回两个集合的交集元素
sunion key1 key2返回两个集合的并集元素

sdiff key1 key2

返回两个集合的差集元素(key1-key2)

Hash哈希

        键值对集合

                是一个string类型的field和value的映射表,类似Java中的map

                                

hset key field value给key集合中的field键赋值value
hget key1 filed从key1集合filed取出value
hmset key1 field1 value1 field2 value2批量设置hash值
hexists key1 field查看哈希表key中,给定域field是否存在
hkeys key列出hash集合中所有的field
hvals key列出hash集合中所有value
hincrby key field increment为hash集合key中的域field的值加上增量 increment
hsetnx key field value将hash表key中的filed的值设置为value,当且仅当域field不存在

        有序集合Zset

                与set相似,但是是有序的。集合中的每个成员都关联了一个评分,这个评分被用来按照最低分到最高分的方式排序集合中的成员。集合成员是唯一的,但评分可以重复。

zadd key score1 value1 score2 value2将一个或多个member元素及其score值加入到有序集合key中
zrange key start end [WITHSCORES]返回有序集合key中,下标在start和stop之间的元素
zrangebyscore key min max [WITHSCORES]返回有序集key中,所有score介于min和max之间的成员,按score从小到大显示
zrevrangebyscore key max min [WITHSCORES]同上,改为从大到小排序显示
zincrby key increment value为元素的score加上增量
zrem key value删除该集合下指定值的元素
zcount key min max统计min和max范围中的元素个数
zrank key value 查看元素的排名

                数据结构

                        等价于Java的Map<String, Double>

                        hash+跳跃表

 Redis新数据类型

        Bitmaps

         HyperLogLog

pfadd key element添加指定元素
pfcount key统计基数数量
pfmerge destkey  sourcekey ..将一个或多个HLL合并后的结果存在另一个HLL中

        Geographic(GEO)

        该类型就是元素的二维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度hash等常见操作。

geoadd key longitude latitude member...添加地理位置(经度,纬度,名称)
geopos key member根据名称取位置
geodist key member1 member2 [m|km|ft|mi]获取两个位置之间的直线距离
georadius key longitude altitude radius m|km|ft|mi以给定的经纬度为中心,找出某一半径内的元素

        有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。已添加的数据是不能再往里添加。

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

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

相关文章

基于springboot+vue的火锅店管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

2024.3.16-408学习笔记-C-数据在内存中的存储

1、整数型存储 整数型存储就是所有整型家族里的数据类型的存储方式&#xff0c;也就是说包含了字符类型的存储&#xff08;因为字符的操作符的返回值是ASCII码值&#xff0c;故实际上存储的是整数&#xff09;。 1.1、有符号整数 有符号整数包含char&#xff0c;short&#x…

Combining external-latent attention for medical image segmentation

结合外部潜在注意的医学图像分割 摘要 注意机制是提高医学图像分割性能的新切入点。如何合理分配权重是注意力机制的关键,目前流行的方法包括全局压缩和使用自注意操作的非局部信息交互。然而,这些方法过于关注外部特征,缺乏对潜在特征的开发。全局压缩方法通过全局均值或…

(一)基于IDEA的JAVA基础3

通过之前的内容&#xff0c;我们在建好的文件夹下建一个java文件&#xff0c;我们来在IDEA中写一下之前用记事本写的helloworld&#xff0c;我们先看一下java代码的规范: 1.java程序文件名一定要有意义&#xff0c;首字母一定要大写。 2.class后面的名字:由大小写字母&#x…

【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景

1 场景描述 对于有两个3GPP无线接入网服务的大面积农田和农场&#xff0c;物联网设备可以通过NTN和TN接入网同时受益于5G系统的双转向数据连接能力。   在这个用例中&#xff0c;我们有一个广域的农业自动化应用系统来控制农业车辆&#xff0c;例如&#xff0c;一个装有数百个…

遇见AI暴雨受邀参加NVIDIA GTC 2024

2024年3月18日&#xff0c;备受瞩目全球科技盛会——2024 GTC在美国加州圣何塞拉开帷幕&#xff0c;此次大会旨在展示最新的GPU&#xff08;图形处理单元&#xff09;技术和应用&#xff0c;以及人工智能、数据科学、深度学习、虚拟化等领域的创新和发展。作为NVIDIA多年的战略…

浅尝大菠萝Pinia

1、pinia简介 Pinia&#xff08;发音为 /piːnjʌ/&#xff0c;类似于英语中的“peenya”&#xff09;是最接近有效包名 pia&#xff08;西班牙语中的_pineapple_&#xff09;的词。 Pinia 是由 Vue.js 团队成员开发&#xff0c;新一代的状态管理器&#xff0c;即 Vuex5.x。 …

C语言-----冒泡排序

今天&#xff0c;让我们来学习一下C语言中一个简单的排序算法------冒泡排序。 什么是冒泡排序呢&#xff1f; 冒泡排序是C语言中一个可以将一个数组的内容按照升序或者降序进行重新排列的算法。简单来说&#xff0c;是一种排序的思维。 冒泡排序的核心思想&#xff1a;让同…

MS2574/2574T/2574S高速、四通道差动线路驱动器

品简述 MS2574/MS2574T/MS2574S 是一款高速、低功耗的四通道 差动线路驱动芯片&#xff0c;用于平衡或非平衡的数字数据传输。可 以满足 ANSI TIA/EIA-422-B 和 ITU &#xff08;原 CCITT &#xff09;建议 V.11 的要求。 三态输出可提供用于驱动双绞线或平行双线传输线路等…

【面试精讲】深克隆和浅克隆的实现方式?深克隆和浅克隆有什么区别?

【面试精讲】深克隆和浅克隆的实现方式&#xff1f;深克隆和浅克隆有什么区别&#xff1f; 目录 本文导读 一、浅克隆&#xff08;Shallow Clone&#xff09; 二、深克隆&#xff08;Deep Clone&#xff09; 1、递归使用clone()方法实现深克隆 2、使用序列化实现深克隆 …

程序员思维之新机遇面前如何选择

你会不会因为 AI 的爆火&#xff0c;焦虑 AI 会替代自己的工作&#xff0c;焦虑其他人躬身入局把你淘汰。 我有过&#xff0c;甚至想全部精力都去学习 ChatGPT、Stable diffusion 、 Midjourney&#xff0c;每新出来一款大语言模型就想预约体验&#xff0c;那段时间像是无头的…

【复现】某指挥调度管理平台 SQL注入漏洞_66

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 该平台提供强大的指挥调度功能&#xff0c;可以实时监控和管理通信网络设备、维护人员和工作任务等。用户可以通过该平台发送指令…

代码随想录算法训练营Day52 ||leetCode 300.最长递增子序列 || 674. 最长连续递增序列 || 718. 最长重复子数组

300.最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {if (nums.size() < 1) return nums.size();vector<int> dp(nums.size(), 1);int result 0;for (int i 1; i < nums.size(); i) {for (int j 0; j < i; j) {if (…

概率基础——逻辑回归多分类法

概率基础——逻辑回归多分类法 逻辑回归是一种经典的分类算法&#xff0c;通常用于解决二分类问题。然而&#xff0c;在实际应用中&#xff0c;我们经常会遇到多分类任务。本文将简单介绍逻辑回归的理论、多分类方法以及优缺点&#xff0c;并提供一个Python实现的示例。 逻辑…

2 使用GPU理解并行计算

2.1 简介 本章旨在对并行程序设计的基本概念及其与GPU技术的联系做一个宽泛的介绍。本章主要面向具有串行程序设计经验&#xff0c;但对并行处理概念缺乏了解的读者。我们将用GPU的基本知识来讲解并行程序设计的基本概念。 2.2 传统的串行代码 绝大多数程序员是在串行程序占据…

3.6 条件判断语句cmp,je,ja,jb及adc、sbb指令

汇编语言 1. adc指令 adc是带进位加法指令&#xff0c;它利用了CF位上记录的进位值指令格式&#xff1a;adc 操作对象1&#xff0c;操作对象2功能&#xff1a;操作对象1 操作对象1 操作对象2 CF例如&#xff1a;adc ax,bx&#xff0c;实现的功能是&#xff1a;ax ax bx …

利用JS实现网页全自动翻译

由于谷歌翻译退出内地市场&#xff0c;可能导致谷歌浏览器默认提供的网页全文翻译在内地无法使用。今天我向大家推荐一个简洁的解决方案&#xff1a;只需两行 JavaScript 代码&#xff0c;即可实现 HTML 的全自动翻译&#xff0c;而无需修改页面、配置语言文件或使用 API 密钥。…

eth uniswap 套利交易案例四

交易hash: 0x085843b47c0d1b0f820b80c166ea8dd2e3928876fb353d107e49dcf879cf8426 交易时间&#xff1a; 2024.02.29 获利&#xff1a; 196,284刀 balancer 借了 338个 weth&#xff0c; 然后和 0x3BA6A019eD5541b5F5555d8593080042Cf3ae5f4 交易用 282个weth 换了293个wste…

什么是状态压缩DP???

1. 引言 相信大家已经对普通的01背包或者其他背包问题已经很熟练了&#xff0c;但是有时候我们去解决NP问题&#xff08;指数级别的复杂度&#xff0c;比如N&#xff01;&#xff09;&#xff0c;时间复杂度就会非常之大 所以&#xff0c;这个时候我们需要寻找更加优化的方法…

微信小程序调试、断点调试

1、wxml 查看对应的页面组件 2、console面板可以用来打印信息 3、sources 用来断点调试 4、network面板用来调试接口 5、storage面板 可以查看每个key对应的value内容&#xff0c;这些数据在用户使用小程序时被持久化保存在本地。