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

连云港市千栀味食品贸易有限公司 2026/09/09 18:53:16

《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

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

湘潭网站建设建设集团网站

零基础构建智能骑行机器人:离线虚拟训练全攻略【免费下载链接】zwift-offlineUse Zwift offline项目地址: https://gitcode.com/gh_mirr

2026/06/30 13:48:07

网站建设服务中国建设银行官方网站

在当今数字化时代,企业IT管理和系统部署面临着前所未有的挑战。传统的手动安装方式效率低下,而商业解决方案又成本高昂。FOGProject作为一款完全免费的开源计算机克隆与管

2026/06/30 10:03:48

信阳网站建设龙岩网站建设

终极指南:5分钟快速上手DeepSeek-Prover-V2数学证明AI助手【免费下载链接】DeepSeek-Prover-V2-671B项目地址: https://ai.gitcode

2026/06/30 13:15:35

网站建设案例银行网站建设

Windows下Anaconda安装太臃肿?Miniconda轻量替代方案来了在一台刚装完系统的Windows笔记本上,你想快速跑通一个PyTorch的深度学习示例。但当你

2026/06/30 11:14:24

莆田网站建设崇左网站建设

18.1 项目规划:钉钉/飞书个人助理Bot需求分析课程概述在前面的章节中,我们学习了Agent技术的基础理论、核心技术组件以及在不同场景下的应用方式。从本章开始,我们将通过一个具体的实战项目——构建

2026/06/30 13:13:35

四川网站建设大庆网站建设

HunyuanOCR在自动驾驶感知系统中的路牌与标识识别应用在城市道路中穿行的自动驾驶车辆,不仅要“看见”周围的车辆、行人和车道线,更要“读懂”交通规则——限速60的标志是

2026/06/30 09:52:47

免费网站建设珠海网站建设

群晖Audio Station智能歌词插件:让私人音乐库焕发新生【免费下载链接】qq_music_aumSynology LRC Plugin. 群晖 Audio Station 歌词插

2026/06/30 10:39:51

怎样建设网站江苏省建设厅网站

Miniconda-Python3.9 是否支持 PyTorch Mobile 移动端部署预研在移动智能设备日益普及的今天,将深度学习模型高效部署到手机、平板和嵌入式终端已成为 AI 工

2026/06/30 13:35:36