redis常用五大数据类型

目录

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.mzph.cn/news/758783.shtml

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

相关文章

C++ UML类图

参考文章&#xff1a; &#xff08;1&#xff09;C UML类图详解 &#xff08;2&#xff09;C基础——用C实例理解UML类图 &#xff08;3&#xff09;C设计模式——UML类图 &#xff08;4&#xff09;[UML] 类图介绍 —— 程序员&#xff08;灵魂画手&#xff09;必备画图技能之…

2 使用GPU理解并行计算

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

手撕算法-二叉树的最大深度

描述&#xff1a;分析&#xff1a;求以节点root为根节点的树的最大深度。可以进行拆分&#xff1a;root为根节点的树的最大深度 max(左子树的最大深度, 右子树最大深度&#xff09;1 截止条件是节点为空&#xff0c;深度为0&#xff1b; 代码&#xff1a; public int maxDep…

HarmonyOS如何创建及调用三方库

介绍 本篇主要向开发者展示了在Stage模型中&#xff0c;如何调用已经上架到三方库中心的社区库和项目内创建的本地库。效果图如下&#xff1a; 相关概念 Navigation&#xff1a;一般作为Page页面的根容器&#xff0c;通过属性设置来展示页面的标题、工具栏、菜单。Tabs&#…

Java + sa-token统一身份认证开发笔记

官网地址&#xff1a;Sa-Token 统一认证服务端 直接用的官网的demo&#xff0c;稍加改动&#xff0c;因为要前后端分离&#xff0c;加了一个H5Controller&#xff0c;官网也有详细介绍&#xff0c;这一部分不难&#xff0c;照着做就行了 配置文件&#xff1a; # Sa-Token 配…

vo、po、dto、bo、pojo、entity

VO&#xff1a;Value Object&#xff0c;值对象。 通常用于业务层之间的数据传递&#xff0c;由new创建&#xff0c;由GC回收&#xff1b;例如&#xff1a;将商品信息和用户信息重新用一个对象封装起来。和PO一样也是仅仅包含数据而已&#xff0c;但应是抽象出的业务对象&…

全网良心开源知识库:AI学习者的宝藏之地

导语&#xff1a;在这个信息爆炸的时代&#xff0c;想要入门AI&#xff0c;找到最一流的学习资源并非易事。然而&#xff0c;有一个地方&#xff0c;能让你免费学习AI&#xff0c;获取最顶尖的知识&#xff0c;还能加入最优秀的AI学习圈。今天&#xff0c;我要向大家推荐的&…

Jumpserver 堡垒机用户启用双因子登录

前言&#xff1a; 堡垒机双因子登录 堡垒机往往是内部权限的集合体&#xff0c;拿到了堡垒机的用户账号密码&#xff0c;很容易就顺藤摸瓜攻破各种应用系统&#xff0c;除了常规的用户名复杂密码的要求外&#xff0c;我们常常都要求采用双因子的登录方式。双因子最常见的就是账…

【Qt学习笔记】(六)界面优化

界面优化 1 QSS1.1 背景介绍1.2 基本语法1.3 QSS设置方式1.3.1 指定控件样式设计1.3.2 全局样式设置1.3.3 使用 Qt Designer 编辑样式 1.4 选择器1.4.1选择器概况1.4.2 子控件选择器&#xff08;Sub-Controls&#xff09;1.4.3伪类选择器(Pseudo-States) 1.5 样式属性1.5.1 盒模…

MyBatis:编织数据之美的艺术

在数据库交互的舞台上&#xff0c;MyBatis就如同一位出色的编码艺术家&#xff0c;通过其独特的姿态和技巧&#xff0c;将数据库操作变得既优雅又高效。在这篇博客中&#xff0c;我们将深入研究MyBatis的使用详解&#xff0c;揭开其中的奥秘&#xff0c;感受数据之美的艺术之旅…

SpringCloud-Nacos配置管理

在nacos中添加配置文件 如何在nacos中管理配置呢&#xff1f; 然后在弹出的表单中&#xff0c;填写配置信息&#xff1a;如&#xff1a;userservice-dev.yaml 注意&#xff1a;项目的核心配置&#xff0c;需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置…

【机器学习】基于麻雀搜索算法优化的BP神经网络分类预测(SSA-BP)

目录 1.原理与思路2.设计与实现3.结果预测4.代码获取 1.原理与思路 【智能算法应用】智能算法优化BP神经网络思路【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.设计与实现 数据集&#xff1a; 多输入多输出&#xff1a;样本特征24&#xff0c;标签类别…

linux服务器上遇到杀不死的进程怎么办?

想要结束某个进程时&#xff0c;一般会先top一下找到进程号&#xff0c;然后kill xxx。 然而&#xff0c;我最近发现一个两百多兆的进程一直杀不死&#xff0c;kill完一个还会自动产生新的。 此时&#xff0c;可以用以下指令找到自己名下所有正在运行的进程&#xff0c;对症下药…

解决在命令行中输入py有效,输入python无效,输入python会跳转到microsoft store的问题| Bug

目录 如果你已经尝试过将python添加到系统变量在系统变量里把你自己的路径放到应用商店的路径之前删除windowsapps下的python.exe文件 如果你还未将python添加到系统变量没有python安装包且没有配置系统变量 如果你已经尝试过将python添加到系统变量 打开 运行&#xff0c;输入…

【linux】环境基础|开发工具|gcc|yum|vim|gdb|make|git

目录 ​编辑 Linux 软件包管理器 yum 软件包: 操作&#xff1a; 拓展&#xff1a;lrzsz简介 Linux开发工具 Linux编辑器-vim使用 vim 的基本概念 命令模式 插入模式 底行模式 vim 命令模式的操作指令 vim 底行模式的操作命令 Linux编译器-gcc/g使用 功能 格…

5_springboot_shiro_jwt_多端认证鉴权_禁用Cookie

1. Cookie是什么 ​ Cookie是一种在客户端&#xff08;通常是用户的Web浏览器&#xff09;和服务器之间进行状态管理的技术。当用户访问Web服务器时&#xff0c;服务器可以向用户的浏览器发送一个名为Cookie的小数据块。浏览器会将这个Cookie存储在客户端&#xff0c;为这个Co…

java的前缀和算法

前缀和的概念 对于一个给定的数组A&#xff0c;它的前缀和数组S中S[i]表示从第1个元素到第i个元素的总和&#xff0c;用公式表示为&#xff1a; SiA1A2A3...An 前缀和的作用 在O(1)的时间求出数组任意区间的区间和。 降低求解的复杂度 算法模板 int n10; int [] arrnew in…

【Linux】盘点广义层面上【三种最基本的进程状态】

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

SQL语句之SELECT语句

一般格式 SELECT DISTINCT/ALL 目标列表达式 //要显示的属性列 FROM 表名/视图名 //查询的对象 WHERE 条件表达式 //查询条件 GROUP BY 列名 HAVING 条件表达式 //查询结果分组 ORDER BY 列名 次序; //最终查询结果排序 文章目录 一、基本查询 1、SELECT 目标列表达…

进程(2)——进程优先级

1、基本概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用&#xff0c;可以改善系统性能。 还可以把进程运行到指定的CPU上&#xff0c;这样一来&a…