Redis 笔记
Redis 简介redis是以key-value形式存储和传统的关系型数据库不一样不一定遵循传统数据库的一些基本要求。redis是非关系型的分布式的开源的水平可拓展的优点:对数据高并发读写(直接是内存中进行读写的)对海量数据的高效率存储和访问对数据的可拓展性和高可用性单线程操作,每个操作都是原子操作,没有并发相关问题缺点:无法做太复杂的关系数据库模型关系型数据库和非关系型数据库的区别比较项关系型数据库非关系型数据库数据模型表格结构多个表之间有关联灵活模型文档、键值、图等查询能力SQL标准强一致性多样化查询语法事务支持强事务弱事务或有限支持适用场景数据结构稳定高扩展需求、灵活模式或特殊数据结构数据类型及常用命令String 字符串命令说明setkey value存入或修改键值对getkey根据键取出值incrkey自增decrkey自减delkey根据键删除值setexkey timeout value存入或修改键值对并设置过期时间ttlkey查询 key 的过期时间-1为无过期时间-2为已失效setnxkey value存入键值对如果已存在则不做操作incrbykey num将当前的值增加 numdecrbykey num将当前的值减少 nummsetk1 v1 k2 v2 …批量存入或修改键值对mgetk1 k2 …批量获取键值对appendkey value尾部追加值setrangekey index value在当前字符串的指定位置增加Hash 表命令说明hsetkey hashkey hashvalue设置一个 hash 对象的键值对hgetkey hashkey根据 hash 对象的键获取值hexistskey hashkey判断这个 hash 对象是否有这个键hdelkey hashkey根据 hashkey 删除某个 hash 键值对hincrbykey hashkey递增 hash 的值hlenkey获取 hash 对象 key 的数量hkeyskey获取 hash 对象的所有的键hvalskey获取 hash 对象的所有的值hgetallkey获取 hash 对象的所有数据hsetnxkey hashkey hashvalue存入一个 hash 对象的键值对如果有则不做操作List 列表命令用法rpush/lpushkey value往列表右/左边添加数据lrangekey start end范围显示列表数据,全显示则设置0 -1lpop/rpopkey弹出列表最左/右边的数据llenkey获取列表长度linsertkey before/after refVal value参考值之前/后插入数据lsetkey index value根据索引修改数据lremkey count value在列表中按照个数删除数据ltrimkey start end范围截取列表lindexkey index根据索引获取列表数据Set 无序集合命令用法saddkey value往 set 集合中添加元素smemberskey列出 set 集合中的元素sremkey value删除 set 集合中的元素spopkey count随机弹出集合中的元素sdiffkey1 key2返回 key1 中特有元素(差集)sinterkey1 key2返回两个 set 集合的交集sunionkey1 key2返回两个 set 集合的并集sdiffstore/sinterstore/sunionstorevar k1 k2取交集/并集/差集后将返回值放到另一个 set 里smovekey1 key2 value把 key1 中的某元素移入 key2 中scardkey返回set集合中元素个数sismemberkey value判断集合是否包含某个值srandmemberkey count随机获取 set 集合中元素zSet 集合命令用法zaddkey score value存入分数和名称zincrbykey score column偏移名称对应的分数zrangekey start end按照分数升序输出名称zrevrangekey start end按照分数降序输出名称zrankkey name升序返回排名zrevrankkey name降序返回排名zcardkey返回元素个数zrangebyscorekey min max [withscores]按照分数范围升序输出名称zrevrangebyscorekey max min [withscores]按照分数范围降序输出名称zremkey name删除名称和分数zremrangebyscorekey min max [withscores]根据分数范围删除元素zremrangebyrankkey start end根据排名删除元素zcountkey min max按照分数范围统计个数事务命令用法multi开启事务exec提交事务discard取消事物其他高级命令命令用法keysname查询所有的 key 名可以用 * 模糊查询existskey查询是否存在 keyexpirekey设置某个 key 的过期时间persistkey取消 key 的过期时间flushdb/flushall清空当前库/清空所有库selectnumber选择库0~15movekey index将 key 移动到第 index 个数据库randomkey随机返回数据库中的keyrenamekey newkey重命名dbsize查看数据库的key数量**info **获取数据库信息**config get **实时传储收到的请求(返回相关的配置信息)**config get * **返回所有配置理论部分选择数据类型的原则如果确定使用redis, 此时需要考虑使用哪个数据类型如果要排序选用zset如果数据是多个且允许重复选用list如果数据是多个且不允许重复选用set剩下的使用string如果是对象类型也可使用hash有些公司约定: 所有的redis的key跟value都使用字符串如果使用排序就用zset因为这样可以避免泛型的使用方便转换字符串Key 的设计key的设计唯一性可读性灵活性时效性持久化机制RDB默认方式。将内存中以快照的方式写入到二进制文件中.默认为dump.rdb。可以配置设置自动做快照持久化方式。我们可以配置 redis 在 n 秒内如果超过 m 个 key 就修改自动做快照。执行 save 命令或 flushdb/flushalll 命令时会直接触发 RDBsave 900 1 #900秒内如果超过1个Key被修改则发起快照保存 save 300 10 save 60 10000AOFaof比快照方式有更好的持久化性是由于在使用aof时redis会将每一个收到的写命令都通过write函数追加到命令中当redis重新启动时会重新执行文件中保存的写命令来在内存中重建这个数据库的内容.这个文件在bin目录下appendonly.aofappendonly yes //启动aof持久化方式有三种修改方式 #appendfsync always//收到命令就立即写到磁盘,效率最慢.但是能保证完全的持久化 #appendfsync everysec//每秒写入磁盘一次,在性能和持久化方面做了很好的折中 #appendfsync no //完全以依赖os 性能最好,持久化没保证总结RDB 性能好但是易丢失数据AOF 性能差但是不易丢失数据内存淘汰机制常见的内存淘汰机制分为四大类1. LRULRU是Least recently used最近最少使用的意思简单的理解就是从数据库中删除最近最少访问的数据该算法认为你长期不用的数据那么被再次访问的概率也就很小了淘汰的数据为最长时间没有被使用仅与时间相关。2. LFULFU是Least Frequently Used最不经常使用的意思简单的理解就是淘汰一段时间内使用次数最少的数据这个与频次和时间相关。3. TTLRedis中有的数据是设置了过期时间的而设置了过期时间的这部分数据就是该算法要解决的对象。如果你快过期了不好意思我内存现在不够了反正你也要退休了提前送你一程把你干掉吧。4. 随机淘汰生死有命富贵在天是否被干掉全凭天意了。Key 删除策略Redis中大家会对存入的数据设置过期时间那么这些数据如果过期了Redis是怎么样把他们消灭掉的呢我们一起来探讨一下。下面介绍三种清除策略惰性删除当访问Key时才去判断它是否过期如果过期直接干掉。这种方式对CPU很友好但是一个key如果长期不用一直存在内存里会造成内存浪费。定时删除设置键的过期时间的同时创建一个定时器当到达过期时间点立即执行对Key的删除操作这种方式最不友好。定期删除隔一段时间对数据进行一次检查删除里面的过期Key至于要删除多少过期Key检查多少数据则由算法决定。举个例子方便大家理解Redis每秒随机取100个数据进行过期检查删除检查数据中所有已经过期的Key如果过期的Key占比大于总数的25%也就是超过25个再重复上述检查操作。集成 Java 应用Jedis导入依赖dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactId/dependency基本操作// 创建Jedis连接池JedisPoolpoolnewJedisPool(localhost,6379);// 从连接池中获取Jedis对象Jedisjedispool.getResource();jedis.auth(123456);// 密码// TODO: 执行逻辑System.out.println(jedis);// 关闭资源销毁连接池jedis.close();pool.destroy();细节配置GenericObjectPoolConfigconfignewGenericObjectPoolConfig();//最大连接数, 默认8个config.setMaxTotal(100);//最大空闲连接数, 默认8个config.setMaxIdle(20);//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1config.setMaxWaitMillis(-1);//在获取连接的时候检查有效性, 默认falseconfig.setTestOnBorrow(true);JedisPoolpoolnewJedisPool(config,192.168.122.128,6379,5000,wolfcode);Jedisjpool.getResource();Stringnamej.get(name);System.out.println(name);j.close();pool.close();pool.destroy();之后调用的方法名同以上命令名集成 SpringBoot导入依赖!-- SpringBoot 父类 --parentartifactIdspring-boot-starter-parent/artifactIdgroupIdorg.springframework.boot/groupIdversion2.3.3.RELEASE/version/parent!-- SpringBoot 集成 redis --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- SpringBoot 测试 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependencyapplication.ymlspring:redis:host:127.0.0.1port:6379password:基本操作AutowiredprivateStringRedisTemplateredisTemplate;TestpublicvoidtestRedisTemplate(){// 操作stringredisTemplate.opsForValue().set(name,LTT);// 操作hashredisTemplate.opsForHash().put(user,name,LTT);// 操作listredisTemplate.opsForList().leftPush(hobby,唱);// 操作setredisTemplate.opsForSet().add(颜色,红,黄,蓝);// 操作zsetredisTemplate.opsForZSet().add(名单,小明,100);}

相关新闻

EverythingToolbar终极指南:Windows任务栏文件搜索神器快速上手教程

EverythingToolbar终极指南:Windows任务栏文件搜索神器快速上手教程

EverythingToolbar终极指南:Windows任务栏文件搜索神器快速上手教程 【免费下载链接】EverythingToolbar Everything integration for the Windows taskbar. 项目地址: https://gitcode.com/gh_mirrors/eve/EverythingToolbar EverythingToolbar是一款革命性…

2026/8/10 4:21:11 阅读更多 →
告别重复劳动:5步掌握Pulover‘s Macro Creator自动化工具

告别重复劳动:5步掌握Pulover‘s Macro Creator自动化工具

告别重复劳动:5步掌握Pulovers Macro Creator自动化工具 【免费下载链接】PuloversMacroCreator Automation Utility - Recorder & Script Generator 项目地址: https://gitcode.com/gh_mirrors/pu/PuloversMacroCreator 每天在Windows电脑前重复点击、输…

2026/8/10 4:43:39 阅读更多 →
SpringBoot构建汽车电商平台的技术实践

SpringBoot构建汽车电商平台的技术实践

1. 项目概述:汽车电商平台的SpringBoot实现方案去年帮朋友公司重构汽车销售系统时,我选择了SpringBootMyBatis技术栈。这个基于JavaWeb的汽车商城管理系统,本质上是一个集车辆展示、在线交易、订单管理于一体的垂直领域电商平台。相比通用电商…

2026/8/10 4:29:46 阅读更多 →

最新新闻

3步掌握实时翻译:跨越语言障碍的Windows解决方案

3步掌握实时翻译:跨越语言障碍的Windows解决方案

3步掌握实时翻译:跨越语言障碍的Windows解决方案 【免费下载链接】LiveCaptions-Translator Lightweight and powerful real-time audio/speech translation tool based on Windows LiveCaptions. 项目地址: https://gitcode.com/gh_mirrors/li/LiveCaptions-Tran…

2026/8/10 21:54:59 阅读更多 →
Ginblog性能优化指南:数据库查询优化与缓存策略

Ginblog性能优化指南:数据库查询优化与缓存策略

Ginblog性能优化指南:数据库查询优化与缓存策略 【免费下载链接】Ginblog ginvueMySQL全栈制作一个博客 项目地址: https://gitcode.com/gh_mirrors/gi/Ginblog Ginblog作为基于ginvueMySQL的全栈博客项目,随着数据量增长和访问量提升&#xff0c…

2026/8/10 21:54:59 阅读更多 →
BiliBiliToolPro终极指南:5分钟搞定B站自动化任务管理

BiliBiliToolPro终极指南:5分钟搞定B站自动化任务管理

BiliBiliToolPro终极指南:5分钟搞定B站自动化任务管理 【免费下载链接】BiliBiliToolPro B 站(bilibili)自动任务工具,支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。 项目地址: https://gitcode.com/GitHub…

2026/8/10 21:54:59 阅读更多 →
安全CSS技术揭秘:Codex Dream Skin如何保护你的界面美化体验

安全CSS技术揭秘:Codex Dream Skin如何保护你的界面美化体验

安全CSS技术揭秘:Codex Dream Skin如何保护你的界面美化体验 【免费下载链接】Codex-Dream-Skin Codex Dream Skin 项目地址: https://gitcode.com/gh_mirrors/co/Codex-Dream-Skin Codex Dream Skin是一款强大的界面美化工具,它不仅能让你的应用…

2026/8/10 21:54:59 阅读更多 →
TUI-Journal多选择模式详解:批量管理日记的5个实用技巧

TUI-Journal多选择模式详解:批量管理日记的5个实用技巧

TUI-Journal多选择模式详解:批量管理日记的5个实用技巧 【免费下载链接】tui-journal Your journal app if you live in a terminal 项目地址: https://gitcode.com/gh_mirrors/tu/tui-journal TUI-Journal是一款专为终端用户设计的日记应用,它提…

2026/8/10 21:54:59 阅读更多 →
5分钟上手Azure DevOps CLI Extension:最实用的az devops login与项目管理命令

5分钟上手Azure DevOps CLI Extension:最实用的az devops login与项目管理命令

5分钟上手Azure DevOps CLI Extension:最实用的az devops login与项目管理命令 【免费下载链接】azure-devops-cli-extension Azure DevOps Extension for Azure CLI 项目地址: https://gitcode.com/gh_mirrors/az/azure-devops-cli-extension Azure DevOps …

2026/8/10 21:53:59 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →