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

山西文联教育网 2026/09/09 17:43:12

《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

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

深圳网站建设公司网站的建设

数字取证中的存储介质处理与保护1. 常见总线/接口速度不同的总线和接口具有不同的传输速度,了解这些速度对于评估数据传输性能至关重要。以下是常见总线/接口及其速度的列表:| 总线/接口 | 速度 ||

2026/06/30 10:10:49

门户网站建设岳阳网站建设

第一章:Open-AutoGLM 社交动态整理Open-AutoGLM 是一个开源的自动化语言模型驱动框架,专注于从社交媒体平台中提取、分析并结构化用户生成内容。该项目通过

2026/06/30 11:53:58

团购网站建设青岛外贸网站建设

Sonic 数字人口型同步模型安全部署指南:警惕“PyCharm激活码永久免费”陷阱在生成式AI席卷内容创作领域的今天,数字人技术正以前所未有的速度从实验室走向千行百业。虚

2026/06/30 12:37:32

专业网站建设医院网站建设

Qwen3-4B-Thinking-2507-FP8:轻量级大模型如何重塑企业AI部署格局【免费下载链接】Qwen3-4B-Thinking-2507-FP8项目地址: https://

2026/06/30 13:04:04

网站建设收费大庆网站建设

一.Docker作用Docker可以用来解决服务器兼容性不同的问题1.快速部署:程序员只需将所需程序打包到镜像中,就可在任何支持Docker的环境中运行2.环境一致性&#x

2026/06/30 12:09:59

南宁网站建设网站建设专业

从零开始玩转CP2102:USB转串口调试的“万能钥匙”怎么用?你有没有遇到过这样的场景?手里的ESP32板子插上电脑,打开Arduino ID

2026/06/30 11:36:26

南昌网站建设婚纱摄影网站建设

审计日志留存:满足监管机构的追溯要求在金融风控系统中,一次异常的信贷审批决策引发了合规部门的关注。调查人员试图复现该次推理过程时却发现:模型版本不详、运行环境

2026/06/30 13:39:37

四平网站建设辽宁网站建设

同步整流PSFB移相全桥变换器电压电流双闭环控制。 原边四个mos管均可实现zvs软开关。 副边采用mos替换传统二极管,降低其导通损耗。 0.025s时刻由满载工况切为半载工况

2026/06/30 10:19:20

网站建设报价广州企业网站建设

用Multisim“预演”运放电路:从理论到实测前的关键一步你有没有过这样的经历?辛辛苦苦搭好一个放大电路,结果一通电——输出不是削顶就是振荡,

2026/06/30 10:05:48