从Redis到SpringBoot集成redis再到redis三大缓存问题

一、Redis

1.Redis描述
  • Redis是一个开源的(BSD许可的),
    • 使用C语言编写的
    • 支持网络交互的
    • 内存中的Key-Value数据结构存储系统
    • 可将数据缓存到内存中 (程序使用时,可以缓存数据,具有临时性,速度快)
    • 非关系新数据库
  • Redis支持多种类型数据库;如:
    • 字符串(strings)
    • 散列(hashes)
    • 列表(lists)等
2.缓存
  • 将数据库缓存到内存(程序中)
    • sqlSession 一级缓存
    • sqlSessionFactory 二级缓存 设置有效时间,减轻数据库的压力
    • eg:
      • 电商项目, 秒杀,抢购
  • 计算机的运行速率
    • CPU>内存>硬件
3.关系型数据库与非关系型数据库
  • 关系型数据库
    • MySQL,SQLserver,Oracle等需要建表,列,且表与表直接有关系,支持多种类型数据结构
    • 一张二维表的表名就是关系,二维表中的一行就是一条记录,二维表中的一列就是一个字段
    • 优点:
      • 容易理解
      • 使用方便,通用sql语言
      • 易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性),大大降低了数据冗余和数据不一致的概率缺点
    • 缺点:
      • 磁盘 I/O 是并发的瓶颈(保证数据一致性,事务控制+锁 性能降低)
  • 非关系型数据库
    • 非关系型,分布式,一般不保证遵循 ACID 原则的数据存储系统,键值对存储,结构不固定。
    • 优点:
      • 根据需要添加的字段不需要多表联查,仅需要id取出对应的value
      • 严格上讲不是一种数据库,而是一种数据结构化存储方法的集合
    • 缺点:
      • 只适合存储简单的数据
      • 不适合复杂查询的数据
      • 不适合持久存储海量数据
4.Redis基本设置
  • 在使用前需要更改内部设置
    • 1.后台运行: daemonize no 改为 daemonize yes
    • 2.设置密码:requirepass 你的密码
    • 3.注释 绑定的 id,默认只能本机访问, 注释后其他电脑就可以远程访问了,即# bind 127.0.0.1
  • 若使用宝塔,只需要在安全中放行端口6379,设置配置密码即可,切记更改完配置后需要重启Redis
  • 若使用不使用宝塔,则需在VMware中
    • 先将从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
      cp redis.conf /usr/local/redis/bin/
    • 修改 redis.conf 文件 vim redis.conf即上部更改配置操作
    • 最后在启动命令:./redis-server redis.conf
    • 查看进程:ps -ef|grep redis
    • 销毁进程:kill -9 进程号
5.Redis基本使用

使用Xshell打开redis

  • 使用Xshell打开redis
    • 首先输入redis-cli进入客户端模式
    • 输入密码 auth
    • ping 测试 结果为PONG
    • ctil+c 退出客户端模式
    • 在重新来一遍测试ping,但会发现此次需要输入密码,否则报错
6.Redis五种数据类型
  • String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)
(1)String

String

  • Redis中的String是二进制安全的,可以包含任何数据,
    • eg:jpg 图片或者序列化的对象
    • String类是Redis最基本的数据类型,String类型的值最大能存储512Mb
  • set 键 值 ; 键为 name,对应的
  • get 键 ; 值为 jim。
(2)Hash

Hash

  • Redis Hash是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
    • 存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希
    • HMSET 设置了两个 field=>value 对,
    • HGET 获取对应 field 对应的 value。
    • 每个 hash 可以存储 232 -1 键值对(40 多亿)
  • hmset 键 字段1 值1 字段2 值2
  • hget 键 字段。
  • student:{field1:“heool”,field2:“oka”}
(3)List

List

  • Redis List(列表)是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
    • LPUSH 设置了两个 aa=>value 对, 是从表头开始添加
    • RPUSH 设置了两个 aa=>value 对, 是从表尾开始添加
    • LRANGE 获取对应 aa对应的 value。
    • 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储 40 多亿)。
    • 一个键可以多次赋值 user:[a,a,a,a]
(4)Set

Set

  • Redis 的 Set 是 string 类型的无序集合。
  • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
    • sadd 命令添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。
    • smembers获取对应的value
    • 以上实例中 rabbitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。
    • 最大的成员数为 232 - 1(4294967295, 每个集合可存储 40多亿个成员)。
    • 可以添加多组数据 user:[aa,a,b,c]
(5)zset(sorted set:有序集合)
  • Redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。
    • 不同的是每个元素都会关联一个 double 类型的分数。
    • Redis 正是通过分数来为集合中的成员进行从小到大的排序。
    • zset 的成员是唯一的,但分数(score)却可以重复。
    • zadd 命令添加元素到集合,元素在集合中存在则更新对应 scorezadd key score member
7.Redis设置失效时间
  • 有时候我们并不希望 redis 的 key 一直存在。(假永久存在,当关闭时所有的数据缓存都会被销毁)
    • 比如验证码等数据,我们希望他可以自动销毁.
    • redis 提供了一些命令,能够让我们对 key设置过期时间,并且让 key 过期之后被自动删除.
    • 如下图所示
      有效实际
  • 上图只演示EX秒单位示例
    • PX 表示以毫秒为单位 EX,PX 不区分大小写
    • set bbbjim EX 10 设置失效时间为 10 秒
    • ttl 键 查看剩余时间(秒) ;
      • 发现剩余时间-2秒,此时说明当前bbb已失效
      • 此时设置20s有效时间
      • 会查看发现他的有效时间一直减少直至-2彻底消失
      • 当你查询为给予有效时间的元素会发现出现-1
    • pttl 键 查看剩余时间(毫秒)
    • 设置值后设置有效时间
    • expire 键 时间(秒)
    • pexpire 键 时间(毫秒)

二、springBoot 集成使用 redis

  • springBoot对redis提供的Jedis封装在了spring-data-redis
    • spring-data-redis的功能
      • 连接池自动管理
      • 对Jedis客户端中的各种api封装在operation接口中
      • 封装了事务功能
      • 针对数据的序列化与反序列化
1.添加redis依赖
        <!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值