那些你不得不知的Redis基础类型常用操作、命令
mhr18 2024-11-19 06:54 18 浏览 0 评论
概念:Redis是用C语言开发的一个开源的高性能键值对数据库。
特征:
- 数据间没有必然的联系
- 内部采用单线程机制进行工作
- 高性能
- 多数据类型支持字符串类型 String列表类型 List散列类型 Map集合类型 Set有序集合类型 SortedSet
- 持久化支持
应用场景
- 为热点数据加速查询;如:热点商品、热点新闻、热点资讯等高访问量信息。
- 任务队列;如:秒杀、抢购、购票等。
- 即时信息查询;如:排行榜等。
- 时效性信息控制;如:验证码、投票控制等。
- 分布式数据共享;如:分布式架构中的session等。
- 消息队列
- 分布式锁
基础数据类型之: String
单个string类型的存储空间为512MB
string基本操作
- 添加或修改数据
set key value
- 获取数据
get key
- 删除数据
del key
- 设置过期时间(默认单位为秒)
expire key second
- 追加信息到初始value后边
append key value
- 添加/修改多个数据
mset key1 value1 key2 value2...
- 获取多个数据
mget key1 key2 ...
- 获取字符串长度
strlen key
- 设置key的生命周期 控制生命周期
setex key seconds value (秒) psetex key millisexxonds value (毫秒)
- key的设置约定与数据库中的表-主键-字段一一对应表名主键名主键值字段名eg1orderid443523454nameeg2equireid435432543typeeg3newsid45435454title
基础数据类型之:Hash
- 存储需求: 对一系列存储的数据进行编排,方便管理,典型应用存储对象信息
- 存储结构:一个存储空间存储多个键值对数据
- hash类型:底层使用哈希表结构实现数据存储
hash存储结构优化
- 如果field数量较少,存储结构优化为类数组结构
- 如果field数量较多,存储结构使用HashMap结构
hash类型基本操作
- 添加/修改数据
hset key field value
- 获取数据
hget key field hgetall key
- 删除数据
hdel key field [field2 ...]
- 添加或删除多个数据
hmset key field1 value1 field2 value2 ...
- 获取多个数据
hmget key field1 field2 ...
- 获取hash表中的字段的数量
hlen key
- 获取hash表中是否存在指定的字段
hexists key field
- 获取哈希表中所用的字段名或字段值
hkeys key hvalues key
- 设置指定字段的数值数据增加指定范围的值
hincrby key field increment hincrbyfloat key field increment
- 如果key值下的field存在则不做操作 不存在则添加进去
hsetnx key field value
hash类型数据操作的注意事项
- hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象,如果数据未获取到,对应的值为(nil)
- 每个hash存储的键值对上限为$2^{32}-1$个键值对
- hash类型十分贴近对象的存储形式,并且可以灵活删除对象属性。但hash设计初衷并不是为了存储大量对象而设计的,切记不可滥用,更不可将hash作为对象列表使用
- hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率会很低,有可能会成为数据访问瓶颈
应用场景
- 电商网站购物车设计实现
基础数据类型之:list
- 数据存储需求:存储多个数据,并对数据进入存储Jon关键的顺序进行区分
- 需要的存储结构:一个存储空间存储多个数据,并且数据可以体现进入顺序
- list类型:保存多个数据,底层使用双向链表存储结构实现
list类型是双向链表存储的
list基本操作
- 添加/修改数据
lpush key value1 value2 [value3] ... //从list链表左侧添加 rpush key value1 value2 [value3] ... //从list右侧添加
- 获取数据
lrange key start stop //指定链表起始结束位置中的value //在获取未知长的的list类型的时候,想查看所有的value可以使用 -1表示倒数第一个 lrange key start -1 lindex key index //获取链表中指定位置的值 llen key //获取链表的长度
- 获取并移除数据
lpop key rpop key
- 规定时间内获取并移除数据(阻塞式数据获取)
blpop key1 [key2] timeout //指定时间内取出并移除key值对应的value,若timeout超时仍未取出则返回空值(nil) 若本来没有 其他客户端在等待的时候添加了这个key的value则做操作 任务队列 brpop key1 [key2] timeout
- 移除指定数据
lrem key count value
list类型数据操作注意事项
- list中保存的数据都是string类型的,数据总容量有限最多 2^32-1个元素
- list具有索引概念,但操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作
- 获取全部操作结束数据的索引设置为-1
- list可以对数据进行分页操作,通常第一页的信息来自list,第二页及更多的数据信息通过数据库进行查询加载
基础数据类型之:set
- 存储需求:存储大量的数据,在查询方面提供更高的效率
- 存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
- set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值不允许为空
set存储结构是string类型的无序集合,内部存储时hash存储结构,因此添加、查找、删除的复杂度都是O(1)
set基本操作
- 添加不重复的数据
sadd key value
- 获取存储的所有数据
smembers key
- 删除数据
strem key member1 [member2]
- 获取集合数据总量
scard key
- 判断集合中是否包含指定数据
sismember key member
- 随机获取集合中指定数量的数据
srandmember key [count]
- 随机获取集合中某个数据并将该数据移出集合
apop key
- 两个集合的交、并、差集
sinter key1 [key2] sunion key1 [key2] adiff key1 [key2]
- 求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2] sunionstore destination key1 [key2] sdiffstore destination key1 [key2]
- 将指定数据从原始集合中移动到目标集合中
smove source destination member
注意事项
- set类型不允许有重复数据,如果添加的数据在set中已存在,将只保留一份
- set虽然与hash存储结构相同,但无法启用hash中存储值的空间
基础数据类型:sortedSet
- 存储需求:数据排序有利于数据的展示效果,需要提供一种可以根据自身特征进行排序的方式
- 存储结构:可以保存排序的数据
- 存储类型:在set的存储结构上添加可排序字段
基本操作
- 添加数据
zadd key scorel member [score2 member2]
- 获取全部数据
zrange key start stop [witchscores] zrevrange key star stop [witchscores]
- 删除数据
zrem key member [member ...]
- 按条件查询数据
zrangebyscore key min max [withscores] [limit] zrevrangebyscore key max min [withscores]
- 条件删除数据
zremrangebyrank key start stop //start stop 表示索引的开始结束位置 zremrangebyscore key min max //min max表示排序的最小到最大位置
- 获取集合数据数量
zcard key zcount key min max
- 集合交、并操作
zinterstore destination numkeys key [key ...] zunionstore destination key [key ...]
关注我,后续更多干货奉上
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)