Redis--非关系型数据库、缓存、分布式锁

一、概述

1、Redis基于内存的非关系型数据库

 2、存储形式

(1)默认数据库一共16个,编号idex 0-15

(2)数据存储:key,value

(3)创建存储数据时,可以设置数据的生命周期---类似局部变量

3、关系型数据库可非关系型数据库

    关系型:基于表,Oracle、mysql、DB2、sqlserver...

    非关系型:采用聚合数据结构存储数据,redis、mongoDB、HBase...

二、5中存储结构

1、java

      字符串、list列表、set集合、pojo(对象)

2、redis中对应存储数据的数据结构

(1)字符串类型:string 

(2)列表类型:list----有序,按存储顺序

(3)集合类型:set----无序

(4)有序集合类型:zset---有序,按某个字段的排序

(5)哈希类型:hash---存对象

三、相关命令

(一)数据库相关

(二)key相关

(三)数据操作相关

待更...

四、事务

1、事务

    把一组数据库操作放一起执行,保证操作的原子性,要么通过成功,要么同时失败

    redis事务:允许把一组redis命令一起执行,将命令进行序列化,压入命令队列,再按照顺序依次一起执行---保证部分原子性

2、redis事务特点

(1)一组命令在压入事务队列过程中发生错误---其他所有命令都不执行----可以保证事务的原子性

(2)压入队列过程中没有错误,执行事务队列中发生错误----只影响本身的命令,不影响其他命令的执行----不能保证事务的原子性

3、实现事务的命令

  • 标记事务的开始---multi---开启事务
  • 执行事务队列中的命令---exec---开始执行事务
  • 清除所有已经压入事务队列的命令,并结束整个事务--discard
  • 监控版本号,判断数据是否被别人改了---watch

          version---版本号---判断是否有别人修改---乐观锁字段

  • 放弃监控所 有键--unwatch---满足一定条件不监控

五、主从复制

1、主从复制----搭建集群

   同样的数据复制到多个redis中

   主少从多

2、读写分离----专门的服务器复制写,专门的服务器 

(1)主机---可写可读 主要负责写  

 (2)从机---只读 只负责读 不可以写

    主库写完同步到从库

3、宕机

 (1)主机宕机,从机原地待命

    特点:从机原来的数据还可读,但不会由主机新增数据

    当主机宕机从机的状态----info replication

    依旧是从机,但连接状态是down

(2)从机宕机

        主机少一个从机,其他从机不变

        从机恢复---需要重新设置主从关系,否则改机作为独立主机运行

(3)从机上位

      当主机宕机之后,从机上位

      之前的主机恢复

           情况1:恢复原主机

           情况2:将原主机变成从机的从机

六、哨兵模式--解决宕机问题

1、  作用:监控主机,自动设置从机上位

 2、哨兵模式的搭建

(1)搭建一个集群架构(一主二从,主从复制)

(2)在主从集群架构中创建哨兵模式配置文件----sentinel.conf

  (3) 启动哨兵模式--redis-sentinel  redis_sentinel.conf 

3、工作机制

       当主机宕机之后,哨兵模式会自动启动投票算法在各个从机中投票(基于性能)

 哪个从机最先到达设置的票数,就升级为主机

      当原主机恢复后,哨兵模式使其自动从属于新的主机

七、分布式锁

1、基于数据库--表锁(读写锁)、行锁

2、基于缓存--redis--Redisson框架,封装了Redlock算法,实现分布式锁

3、基于zookeeper

      可以直接使用zookeeper第三方库Curator客户端,这个客户端中封装了一个可重入的锁服务。

      Curator提供的InterProcessMutex是分布式锁的实现。acquire方法用户获取锁,release方法用于释放锁。

此部分参考:集群环境下Redis分布式锁 - 树上的疯子 - 博客园

                     基于数据库实现的分布式锁_朱小厮的博客-CSDN博客_数据库实现分布式锁

八、消息的发布与订阅

 1、客户端之间的通信----修改数据之后在频道上发布,订阅了该频道的客户端可以接收到消息

 2、消息的订阅和发布(了解)
(1)subscribe----订阅一个或多个频道

(2)public---将消息发送到指定频道上

 3、其他专门消息通信的通道----activeMQ

九、Jdedis工具包

  1、redis的第三方连接工具----redis desktop mananger  类mysql

  2、spring整合redis的两种方式

(1)Jedis

(2)SpringDataRedis----更常用

    Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。

    SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache

此部分参考:Spring集成Redis的两种方式Jedis和RedisTemplate_kagurawill的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值