安徽网站建设网站建设全包

安平县润阔丝网制品有限公司 2026/09/09 17:53:56

《Redis-day01》

0. 今日总结

  1. 了解了NoSQL以及Redis的优势
  2. 复习了Redis的基础命令
  3. 了解了SpringDataRedis的配置和使用
  4. 分别实现了自动和手动序列化及反序列化

1. 初识Redis

1.1 认识NoSQL

1.2 认识Redis

Redis诞生于2009年全称是Remote Dictionaryserver,远程词典服务器,是一个基于内存的键值型NoSQL数据库。

  • 特征
    1. 键值(key-value)型,value支持多种不同数据结构,功能丰富
    2. 单线程,每个命令具备原子性
    3. 低延迟,速度快(基于内存、10多路复用、良好的编码)
    4. 支持数据持久化
    5. 支持主从集群、分片集群
    6. 支持多语言客户端

1.3 安装Redis

在苍穹外卖已经安装过

2. Redis数据类型

2.1 五种常用数据类型

Redis是key-value结构的数据

  • key的数据类型
    1. 字符串String
  • value的数据类
    1. 字符串String
    2. 哈希hash
    3. 列表list
    4. 集合set
    5. 有序集合 sorted set / zset

2.2 各种数据类型特点

  1. 字符串String:普通字符串
  2. 哈希hash:散列,类似于java中的HashMap结构
  3. 列表list:按照插入顺序排序,可以用重复元素,类似于Java中的LinkedList
  4. 集合set:无须集合,没有重复元素,类似于Java中的HashSet
  5. 有序集合 sorted set / zset:集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素

3. Redis常用命令

3.1 字符串操作命令

  1. SET key value:设置指定key的值
  2. GET key:获取指定key 的值
  3. SETEX key seconds value:设置指定key的值,并将key的过期时间设为seconds秒
  4. SETNX key value:只有在key不存在时设置key的值

3.2 哈希操作命令

  1. HSET key field value:将哈希表key中的字段field的值设为value
  2. HGET key field:获取存储在哈希表中指定字段的值
  3. HDEL key field:删除存储在哈希表中的指定字段
  4. HKEYS key:获取哈希表中的所有字段
  5. HVALS key:获取哈希表中的所有值

3.3 列表操作命令

  1. LPUSH key value1 [value2]:将一个或多个值插入到列表头部,类似于队列

    类似于栈

  2. LRANGE key start stop:获取列表指定范围内的元素

  3. RPOP key:一处并获取列表最后一个元素

    Pop最先插入的元素

  4. LLEN key:获取列表长度

3.4 集合操作命令

  1. SADD key member1 [member2]:向集合添加一个或多个成员
  2. SMEMBERS key:返回集合中的所有成员
  3. SCARD key:获取集合的成员数
  4. SINTER key1 [key2]:返回给定所有集合的交集
  5. SUNION key1 [key2]:返回所有给定集合的并集
  6. SREM key member1 [member2]:删除集合中一个或多个成员

3.5 有序集合操作命令

  1. ZADD key score1 member1 [score2 member2]:向有序集合添加一个或多个成员
  2. ZRANGE key start stop [WITHSCORES]:通过索引区间返回有序集合中指定区间内的成员
  3. ZINCRBY key increment member:有序集合中对指定成员的分数加上增量 increment
  4. ZREM key member [member ...]:移除有序集合中的一个或多个成员

3.6 通用命令

通用命令是指部分数据类型,都可以使用的命令

  1. KEYS pattern:查找所有符合给定模式(pattern)的key
  2. EXISTS key:检查给定 key 是否存在
  3. TYPE key:返回 key 所储存的值的类型
  4. DEL key:该命令用于在 key 存在时删除 key

4. 在Java中操作Redis

4.1 Redis的Java客户端

  1. Jedis

  2. Lettuce

  3. Spring Data Redis

    Spring Data Redis是Spring的一部分,对Redis底层开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis来简化操作。

4.2 Spring Data Redis使用方式

4.2.1 基本方法

4.2.2 操作步骤

  1. 导入Spring Data Redis的 mavan坐标

    在sky-server的pom.xml文件中导入mavan坐标

  2. 配置Redis数据源

    在.yml中配置host port等数据,实际数据存放在dev.yml文件中

  3. 编写配置类,创建RedisTemplate对象

  4. 通过RedisTemplate对象操作Redis

    @TestpublicvoidtestRedisTemplate(){System.out.println(redisTemplate);//通过opsForXXX方法获得五种操作对象ValueOperationsvalueOperations=redisTemplate.opsForValue();HashOperationshashOperations=redisTemplate.opsForHash();SetOperationssetOperations=redisTemplate.opsForSet();ListOperationslistOperations=redisTemplate.opsForList();ZSetOperationszSetOperations=redisTemplate.opsForZSet();}/** * 操作字符串类型的数据 */@TestpublicvoidtestString(){//set get setex setnxredisTemplate.opsForValue().set("city","北京");Stringcity=(String)redisTemplate.opsForValue().get("city");System.out.println(city);redisTemplate.opsForValue().set("code","1234",3,TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}/** * 操作哈希类型的数据 */@TestpublicvoidtestHash(){//hset hget hdel hkeys hvalsHashOperationshashOperations=redisTemplate.opsForHash();//给key = 100的hash插入两个值hashOperations.put("100","name","tom");hashOperations.put("100","age","20");//获得key=100的hash的name字段的值Stringname=(String)hashOperations.get("100","name");System.out.println(name);Setkeys=hashOperations.keys("100");System.out.println(keys);Listvalues=hashOperations.values("100");System.out.println(values);hashOperations.delete("100","age");}/** * 操作列表类型的数据 */@TestpublicvoidtestList(){//lpush lrange rpop llenListOperationslistOperations=redisTemplate.opsForList();listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");Listmylist=listOperations.range("mylist",0,-1);System.out.println(mylist);Longsize=listOperations.size("mylist");System.out.println(size);}/** * 操作集合类型的数据 */@TestpublicvoidtestSet(){//sadd smembers scard sinter sunion sremSetOperationssetOperations=redisTemplate.opsForSet();setOperations.add("set1","a","b","c","d");setOperations.add("set2","a","b","x","y");Setmembers=setOperations.members("set1");System.out.println(members);Longsize=setOperations.size("set1");System.out.println(size);Setintersect=setOperations.intersect("set1","set2");System.out.println(intersect);Setunion=setOperations.union("set1","set2");System.out.println(union);setOperations.remove("set1","a","b");}/** * 操作有序集合类型的数据 */@TestpublicvoidtestZset(){//zadd zrange zincrby zremZSetOperationszSetOperations=redisTemplate.opsForZSet();zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);Setzset1=zSetOperations.range("zset1",0,-1);System.out.println(zset1);zSetOperations.incrementScore("zset1","c",10);zSetOperations.remove("zset1","a","b");}/** * 通用命令操作 */@TestpublicvoidtestCommon(){//keys exists type delSetkeys=redisTemplate.keys("*");System.out.println(keys);Booleanname=redisTemplate.hasKey("name");Booleanset1=redisTemplate.hasKey("set1");for(Objectkey:keys){DataTypetype=redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("mylist");}

4.2.3 手动序列化反序列化

4.3 Spring Cache

4.3.1 Spring Cache介绍

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:

  • EHCache

  • Caffeine

  • Redis

  • 常用注解

4.3.2 Spring Cache入门案例

  • 分别演示了上述四种常用注解的使用方式和作用

    实现机制(拿@Cacheable举例):

    1. 执行到对应方法时,被代理对象拦截,转而执行代理方法
      1. 从redis中查询,如果查询成功就退出方法
      2. 执行方法体getById
      3. 将数据存到redis

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

上海网站建设开县网站建设

突破NVIDIA显卡风扇30%转速限制的完整解决方案【免费下载链接】FanControl.ReleasesThis is the release repository for Fan Control,

2026/06/30 11:49:57

广东网站建设长沙营销型网站建设

一、概念1. 流:数据在内存和其他存储设备传输的通道、管道。【理解】2. 流的分类:【面试内容】(1) 按照方向分:[以JVM内存为参照物]a. 输入流&#x

2026/06/30 11:03:23

青岛网站建设公司顺德网站建设

9 个开题报告 AI 工具,继续教育降 AIGC 痛点解决推荐论文写作的困局:时间、重复与重压在继续教育的学术道路上,撰写开题报告和文献综述几乎是每位学习者绕

2026/06/30 14:01:38

广州网站建设宿迁网站建设

💓 博客主页:塔能物联运维的CSDN主页目录我和物联网的相爱相杀史一、物联网运维的"薛定谔状态"二、那些年物联网留下的"坑"三、运维系统的

2026/06/30 13:31:06

商务网站建设深圳网站建设论坛

在当今这个专栏中,我探讨了在获取和讨论个人心理健康问题时,是否存在与生成式AI和大语言模型使用相关的可辨别时间表模式和时间节律。问题的核心是这样的。人们历来在某种可预测的时

2026/06/30 13:40:37

河北网站建设莆田网站建设

深夜的宿舍里,李薇对着电脑屏幕上一行闪烁的光标,已经发呆了两个小时。文档的标题是《浅析数字经济发展现状》,这是她《经济学导论》的课程论文题目。她感觉有满脑子的

2026/06/30 13:32:36

成都 网站建设网站建设目录

夸克网盘自动化管理终极方案:智能部署与高效运作全解析【免费下载链接】quark-auto-save夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙项目地址: https:/

2026/06/30 12:12:30

甘肃省建设厅网站网站建设深圳

城通网盘直连解析工具:免费解锁高速下载的完整指南【免费下载链接】ctfileGet获取城通网盘一次性直连地址项目地址: https://gitcode.com/gh_mirrors/ct

2026/06/30 12:44:32

聊城网站建设淮北网站建设

第一次遇到 HTTPS 抓包乱码,大多数人的反应都很直接:是不是字符集不对?是不是 gzip?是不是工具显示有问题?我以前也是这么

2026/06/30 11:24:25

天津网站建设公司辽宁网站建设

物流包裹分拣:TensorFlow条码识别提速在日均处理百万级包裹的现代快递中心,传送带上的每一个箱子都像是一列高速行驶的列车——稍有迟滞,就会引发整条流水线

2026/06/30 12:58:33