【Redis学习笔记】(一)基础知识
1 简介01NoSQL非关系型数据库非结构化、无关联的、非SQL、BASE无法满足ACID、内存存储使用场景数据结构不固定、对安全性要求不高、有性能要求键值型、文档型、图型02Redis简介远程词典服务器特征键值型value支持不同数据结构单线程每个命令具有原子性低延迟速度快支持数据持久化支持主从集群和分片集群支持多语言客户端启动方式①默认启动redis-server②后台启动redis-server redis.conf③开机自启03Redis客户端命令行客户端redis-cliredis-cli [options] [commonds]图形化界面客户端resp修改配置文件防火墙开放端口号2 常见命令01数据结构keyStringvalue基本类型String/Hash/List/Set/SortedSet特殊类型GEO/BitMap/HyperLoghelp查看命令用法02通用命令针对所有key都可以使用的KEYS查看符合模板的所有keyDEL删除一个或多个指定的key返回值是删除的数量EXISTS判断key是否存在EXPIRE给一个key设置有效期到期自动删除TTL查看key剩余有效期03String类型Redis中最简单的存储类型三种格式字符串、整型、浮点SET添加或修改一个String类型的键值对GET根据key获取String类型的valueMSET/MGET批量多个INCR让一个整形的key自增1INCRBY指定自增步长INCRBYFLOAT让一个浮点类型的数字自增并指定步长SETNX添加一个String类型的键值对前提是这个key不存在否则不执行SETEX添加一个String类型的键值对并且指定有效期04key的层级格式key允许有多个单词形成层级结构多个单词用隔开例如abc:user:1和abc:product:1项目名:业务名:类型:idJava对象可以序列化成json文件05Hash类型无序字典可以将对象中每个字段独立存储增删改查更灵活HSET、HGET等06List类型双向链表可以支持正向检索和反向检索有序、元素可以重复插入删除快查询一般LPUSH左侧插入LPOP左侧删除并返回没有找到返回nilRPUSH右侧插入RPOP右侧删除并返回没有找到返回nilLRANGE key start end返回角标范围内的所有元素BLPOP和BRPOP在没有元素时等待指定时间不直接返回nil07Set类型无序、元素不可重复查找速度快支持交并SADD向集合添加一个或多个元素SREM删除SCARD返回集合中元素个数SISMEMBER key member判断元素是否在集合中SMEMBERS获取集合中所有元素SINTER key1 key2求交集SDIFF key1 key2求差集SUNION key1 key2求并集08SortedSet类型可排序集合底层实现的是SkipList和hash表可排序、元素不重复、查询速度快ZADD、ZREM等ZRANK获取指定元素的排名ZRANGE按范围查找元素3 Redis的Java客户端01Jedis以Redis命令作为方法名线程不安全多线程环境下需要基于连接池①引入依赖dependency groupIdredis.clients/groupId artifactIdjedis/artifactId version3.7.0/version /dependency②建立连接单元测试类private Jedis jedis; BeforeEach void setUp() { // 1.建立连接 // jedis new Jedis(/ip/, /端口/); jedis JedisConnectionFactory.getJedis(); // 2.设置密码 jedis.auth(/pw/); // 3.选择库 jedis.select(0); }③测试StringTest void testString() { // 存入数据 String result jedis.set(name, Alice); System.out.println(result result); // 获取数据 String name jedis.get(name); System.out.println(name name); }④释放资源AfterEach void tearDown() { if (jedis ! null) { jedis.close(); } }连接池package com.heima.jedis.util; import redis.clients.jedis.*; public class JedisConnectionFactory { private static JedisPool jedisPool;//连接池对象 static { // 配置连接池 JedisPoolConfig poolConfig new JedisPoolConfig(); poolConfig.setMaxTotal(8);//最大连接数 poolConfig.setMaxIdle(8);//最大空闲连接 poolConfig.setMinIdle(0);//最小空闲连接 poolConfig.setMaxWaitMillis(1000);//最多等待时长 // 创建连接池对象参数连接池配置、服务端ip、服务端端口、超时时间、密码 jedisPool new JedisPool(poolConfig, , , 1000, ); } public static Jedis getJedis(){ return jedisPool.getResource(); } }02SpringDataRedis整合了Jedis和Lettuce提供了RedisTemplate统一API等Springboot提供SpringDataRedis支持新建项目时勾选①引入依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependency !--common-pool-- dependency groupIdorg.apache.commons/groupId artifactIdcommons-pool2/artifactId /dependency②配置文件yaml手动配置pool连接池才会生效spring: redis: host: port: password: lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 100ms③注入RedisTemplateAutowired private RedisTemplate redisTemplate;④编写测试SpringBootTest class RedisStringTests { Autowired private RedisTemplate redisTemplate; Test void testString() { // 写入一条String数据 redisTemplate.opsForValue().set(name, Alice); // 获取string数据 Object name redisTemplate.opsForValue().get(name); System.out.println(name name); } }03RedisSerializer写入Redis前会把Object序列化为字节形式默认使用JDK序列化但是不好用引入Jackson依赖SpringMVC会自动引入Configuration public class RedisConfig { Bean public RedisTemplateString, Object redisTemplate(RedisConnectionFactory connectionFactory){ // 创建RedisTemplate对象 RedisTemplateString, Object template new RedisTemplate(); // 设置连接工厂 template.setConnectionFactory(connectionFactory); // 创建JSON序列化工具 GenericJackson2JsonRedisSerializer jsonRedisSerializer new GenericJackson2JsonRedisSerializer(); // 设置Key的序列化 template.setKeySerializer(RedisSerializer.string()); template.setHashKeySerializer(RedisSerializer.string()); // 设置Value的序列化 template.setValueSerializer(jsonRedisSerializer); template.setHashValueSerializer(jsonRedisSerializer); // 返回 return template; } }private RedisTemplateString,Object redisTemplate;但是Json序列化器会将类的字节码写入有额外的内存开销04StringRedisTemplate统一使用String序列化器存对象时手动完成序列化和反序列化StringRedisTemplate默认使用String序列化方式Autowired private StringRedisTemplate stringRedisTemplate; // JSON序列化工具 private static final ObjectMapper mapper new ObjectMapper(); Test void testSaveUser() throws JsonProcessingException { // 创建对象 User user new User(Alice, 21); // 手动序列化 String json mapper.writeValueAsString(user); // 写入数据 stringRedisTemplate.opsForValue().set(user:200, json); // 获取数据 String jsonUser stringRedisTemplate.opsForValue().get(user:200); // 手动反序列化 User user1 mapper.readValue(jsonUser, User.class); System.out.println(user1 user1); }

相关新闻

达摩院开源RynnBrain:首个支持可移动操作的具身大脑基础模型

达摩院开源RynnBrain:首个支持可移动操作的具身大脑基础模型

摘要具身智能蓬勃发展的当下,具有泛化性的具身能力至关重要。为了追求这个终极目标,业界发展出了两条技术路线。一条路线从机器人末端动作输出入手,发展出可以直接操作物理世界的VLA模型。但是VLA模型由于其数据稀缺性无法实现泛化。因此有了…

2026/7/5 9:07:19 阅读更多 →
图书管理系统

图书管理系统

这个图书管理系统主要是分为两个功能:根据输入的用户姓名来进行管理员以及普通用户的区分,如下所示:然后根据所选择的角色进行不同权限菜单的访问:对于管理员:对于普通用户:接下来:进行用户的操作选择。1.寻…

2026/7/7 12:06:04 阅读更多 →
PLL锁相环技术实现:SMIC55工艺下20MHz参考频率三阶二型CPPLL,快速锁定至1GM...

PLL锁相环技术实现:SMIC55工艺下20MHz参考频率三阶二型CPPLL,快速锁定至1GM...

pll锁相环 cppll cadence 三阶二型锁相环 工艺smic55 参考频率20MHz 分频比50 锁定频率1GMHz 锁定时间2us 环形振荡器 ring vco PFD模块 DIV模块 45分频,ps counter CP模块 工艺smic55最近在SMIC55工艺上折腾了个环形VCO的三阶二型锁相环,目标是把20…

2026/7/5 14:22:48 阅读更多 →

最新新闻

听歌不想只发截图?用MusicCard把喜欢的歌做成专属音乐海报

听歌不想只发截图?用MusicCard把喜欢的歌做成专属音乐海报

文章目录1.在极空间一键部署Music Card1.1ssh远程连接到极空间1.2安装docker1.3安装Music Card2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定公网地址总结有些歌适合单曲循环,也适合被认真分享。只是很多时候,我们想表达的不只是“我在听这首歌…

2026/7/7 12:03:16 阅读更多 →
网盘直链下载助手完整指南:告别限速,一键获取真实下载链接

网盘直链下载助手完整指南:告别限速,一键获取真实下载链接

网盘直链下载助手完整指南:告别限速,一键获取真实下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…

2026/7/7 11:57:12 阅读更多 →
如何免费解锁WeMod专业版:3个关键步骤与安全指南

如何免费解锁WeMod专业版:3个关键步骤与安全指南

如何免费解锁WeMod专业版:3个关键步骤与安全指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂订阅费而烦恼吗&am…

2026/7/7 11:55:12 阅读更多 →
腾讯混元 Hy3 开源:多任务比肩大尺寸模型,多项指标显著优化

腾讯混元 Hy3 开源:多任务比肩大尺寸模型,多项指标显著优化

【导语:继 4 月底发布 Hy3 preview 后,腾讯混元 Hy3 现已开源,在推理、智能体、长上下文等任务上显著进步,多项指标优化明显,成为高性价比可靠选择。】混元 Hy3 开源:多维度升级亮点足 腾讯混元 Hy3 在发布…

2026/7/7 11:53:12 阅读更多 →
DAB单移相控制、双有源桥DCDC变换器(电压闭环)仿真(附参考文献)

DAB单移相控制、双有源桥DCDC变换器(电压闭环)仿真(附参考文献)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、…

2026/7/7 11:53:12 阅读更多 →
Paperxie 毕业论文智能写作功能|一站式搞定本科硕博论文,告别熬夜凑稿难题

Paperxie 毕业论文智能写作功能|一站式搞定本科硕博论文,告别熬夜凑稿难题

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图毕业论文 - PaperXie智能写作PaperXieAi论文智能生成软件,10分钟生成万字毕业论文、期刊论文、文献综述、PPT,Aigc查重、降重报告、文献资料。只需一个标题,从开…

2026/7/7 11:49:11 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻