Redis数据库
什么是Redis?
Redis是一种基于内存的key-value结构数据库
他会将我们的数据存放在内存中,这就有利于提高获取数据的速度。同时因为它是存放在内存中,所以当服务器断电时里面的数据也会不复存在
Redis简介
Redis是一个开源的内存中的数据结构存储系统,他可以用作:数据库、缓存和消息中间件
Redis是用C语言开发的一个开源的高性能键值对(key-value
数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的nosql数据库
- Nosql,泛指非关系型数据库
Redis下载与安装
windows系统
将下载好的.zip格式压缩包,直接解压就可以直接使用

linux系统
- 将Redis安装包上传到linux
- 解压安装包,命令:tar -zxvf redis-4.0.0.tar.gz -C /usr/local
- 安装redis的依赖环境gcc,命令:yum install gcc-c++
- 进入/usr/local/redis-4.0.0,进行编译,命令:make
- 进入redis的src目录,进行安装,命令:make install
Redis启动
linux启动
redis-4.0.0 -> src文件夹下执行:./redis-server
设置后台运行:
redis-4.0.0下运行vim redis.conf
输入dae将检索到的no改为yes
保存退出
运行./redis-server ./redis.conf
使用命令
src下./redis-cli
windows启动
运行redis-server.exe
Redis设置密码
- 在radis.conf中检索password,将注释解掉,并把第二个单词改成需要的密码
- 保存,重启服务
- 输入src/redis-cli回车
- 输入auth 你的密码
设置允许远程连接
- 在radis.conf中检索bind
- 将bind 127.0.0.1注释掉
- 重启服务
- 在windows中的radis路径中使用powershell运行命令:
.\redis-cli.exe -h 192.168.136.131 -p 6379 -a 510609
Redis数据类型
Redis存储的是key-value结构的数据,其中key是字符串类型,value有五种常用的数据类型
- 字符串string类型:string普通字符串,常用
- 哈希表hash类型:hash适合存储对象
- 列表list类型:list按照插入顺序排列,允许存在重复的元素
- 无序集合set类型:set无序集合,没有重复的元素
- 有序集合sorted set类型:有序集合,没有重复元素
Redis常用命令
字符串String操作命令
1 | #设置key和对应的value |
哈希hash操作命令
Redis hash是一个string类型的field和calue的映射表,hash特别适合用于存储对象,常用的命令
1 | #使用 HSET 添加一个字段和值到哈希表中: |
列表list操作命令
1 | #将一个或多个值插入到列表头部,返回列表的长度 |
无序集合set操作命令
1 | #向集合添加一个或多个成员 |
有序集合sorted set操作命令
1 | #向有序集合中添加成员 |
通用命令
1 | KEYs pattern |
Java操作radis
Java设置radis的spring类型
1 | /*添加键值对*/ |
Java设置radis的list类型
1 | ListOperations listOperations = redisTemplate.opsForList(); |
Java设置radis的hash类型
1 | HashOperations hashOperations=redisTemplate.opsForHash(); |
Java设置radis的Set类型
1 | SetOperations setOperations= redisTemplate.opsForSet(); |
Java设置radis的sorted set类型
1 | ZSetOperations zSetOperations=redisTemplate.opsForZSet(); |
使用Spring Sache
Spring Cache简介
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
针对不同的缓存技术需要实现不同的CacheManager
| CacheManager | 描述 |
|---|---|
| EhCacheCacheManager | 使用EhCache作为缓存技术 |
| GuavaCacheManager | 使用Google的GuavaCache作为缓存技术 |
| RedisCacheManager | 使用Redis作为缓存技术 |
Spring Cache常用注解
| 注解 | 说明 |
|---|---|
| @EnableCaching | 开启缓存注解功能 |
| @Cacheable | 在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 |
| @CachePut | 将方法的返回值放到缓存中 |
| @CacheEvict | 将一条或多条数据从缓存中删除 |
示例:
1 | /** |
Redis主从复制
首先本机设为从库,服务器作为主库
修改服务器(主库)
打开 Redis 主服务器 redis.windows.conf 配置文件,找到 bind 和 port 配置项,确保 Redis 绑定的 IP 地址和端口号正确:
1 | bind 127.0.0.1 # 这里改成服务器的 IP 地址或者绑定的外网地址 |
主库src中运行:
1 | redis-server ../redis.conf #运行服务 |
修改本机(从库)
打开redis.conf配置文件
1 | slaveof 192.168.56.110 6379 #配置所属主服务器的ip和端口号 |
从库中启动redis-server.exe和redis-cli.exe,并运行
1 | slaveof 192.168.136.131 6379 #设置所属主库ip和端口号 |
redis哨兵机制
主从复制带来的问题
当主服务宕机时,redis不能自动切换从服务为主服务,只能通过人工手动的形式,中间会出现服务断档
从而引入哨兵模式概念:
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
用文字描述一下故障切换(failover)的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。
哨兵配置
在readis文件夹下找到sentinel.conf文件
修改对应配置
1
2
3
4
5
6
7
8
9
10
11
12
13#禁止保护配置
protected-mode no
#监控配置
#setinel monitor:代表监控;
#mymaster:代表主机名,可以自定义;
#192.168.56.110∶主服务ip地址;
#6379∶主服务端口号;
#2:需要几个哨兵意见统一
sentinel monitor mymaster 192.168.56.110 6379 2
#配置后台启动
daemonize yes启动哨兵
Sentinel ./sentinel.conf