news 2026/4/22 6:02:30

【Redis-day01】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Redis-day01】

《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

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

Web常见安全漏洞全解析(含案例+前后端实操防御方案)

Web常见安全漏洞全解析(含案例前后端实操防御方案) 目录 SQL注入XSS攻击(跨站脚本攻击)CSRF攻击(跨站请求伪造)DDoS攻击(分布式拒绝服务攻击)DNS劫持JSON劫持点击劫持OS命令注入URL…

作者头像 李华
网站建设 2026/4/20 21:45:03

python基于OpenCV的车牌识别系统

Python基于OpenCV的车牌识别系统 第一章 系统开发背景与核心意义 在智能交通体系快速构建的当下,车牌识别作为车辆身份认证的核心技术,广泛应用于交通违章抓拍、停车场管理、高速公路收费等场景。传统车辆管理依赖人工登记与核查,存在效率低下…

作者头像 李华
网站建设 2026/4/20 4:20:25

中专学历在电商行业的职业发展路径

电商行业对学历要求相对灵活,更注重实际能力和专业技能。中专学历者可通过考取相关证书提升竞争力,以下是8个关键证书及其作用:证书名称适用岗位优势考试难度CDA数据分析师电商数据分析数据分析能力认证中等电子商务师运营/管理国家职业资格中…

作者头像 李华