Redis学习
一,redis简介
1.redis是什么?
redis是一个完全开源的非关系型数据库,遵守BSD协议,是一个高性能的key-value数据库
特点:
redis支持持久化,可以将数据读取到内存,加快访问的读取,第二次读取中可以直接将数据读取到内存中使用
redis不仅支持key-value类型,同时还提供了 list,set,zset,hash等数据类型
redis支持数据的备份,即master-slave模式为备份模式
redis支持cluster模式,支持集群化控制
2.redis优势?
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性
二,redis部署
一,windows安装redis
注意:不建议使用,redis官网提到过,redis没用面向win系统开发,都使用在linux系统来使用
1.下win中redis包
win:https://github.com/tporadowski/redis/releases
2.将包解压到win本地

3.打开cmd终端,切换到redis的存放目录
redis-server.exe redis.windows.conf #启动redis服务
4.使用redis-cli客户端程序安装即可
redis-cli.exe -h 127.0.0.1 -p 6379
二,linux安装redis
1.网络安装redis
1. #yum源下载
2. yum -y install redis-server
2.源码包安装redis
官网下载:Download | Redis
1.准备安装和数据目录
1. mkdir -p /data/soft
2. mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
2.下载redis安装包
1. cd /data/soft
2. wget http://download.redis.io/releases/redis-5.0.7.tar.gz
3.解压redis到/opt/redis_cluster/
tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-5.0.7 /opt/redis_cluster/redis
4.切换目录安装redis
1. cd /opt/redis_cluster/redis
2. make && make install
5.编写redis启动配置文件
vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
bind 127.0.0.1 192.168.2.1 #指定启动地址
port 6379 #端口号
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid #存放PID的文件目录
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log #存放日志的文件目录
databases 16
dbfilename redis.rdb #数据库文件
dir /opt/redis_cluster/redis_6379 #群集文件
保存退出
6.启动当前的服务
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
7.关闭服务
8.登录
redis-cli -h 127.0.0.1 -p 6379 #指定redis的地址,和端口号
三,redis命令
一,redis 键(key)

二,redis 字符串(string)
三,redis 哈希(hash)
1. Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
2. Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

四,redis 列表(list)

五,redis 集合(set)

六,reids 有序集合(sorted set)

四,redis持久化
1.持久化类型
rdb方式:
rdb:是redis默认的持久化方法,rdb方法是通过快照完成的,他保存的是某一时的数据并不关注过程
优点:
rdb是二进制压缩文件,占用空间小,便于传输(传给slave)
主进程fork子进程,可以最大化redis性能
使用RDB文件来恢复数据快
缺点:
不保证数据完整性,会丢失最后一次快照以后更改的所有数据
父进程在fork子进程的时候如果主进程比较大会阻塞
aof方式:
aof:开启aof持久化后redis将所有对数据进行写入的命令(以及参数),记录到aof文件,以此达到记录数据库状态的目的,这样当redis重启后只要按顺序回放这些命令就会恢复到原始状态了
优点:
AOF存储命令操作
大概率保证数据不丢失
缺点:
日志量巨大
ROB与AOF对比
RDB存某个时刻的数据快照,采用二进制压缩存储,AOF存操作命令,采用文本存储(混合);
RDB性能高,AOF性能较低。
RDB在配置触发状态会丢失最后一次快照以后更改的所有数据,AOF设置每一秒保存一次,则最多丢2秒数据
redis以主服务器模式运行,RDB不会保存过期键值对数据,redis以从服务器模式运行,rdb会保存过期键值对,当主服务器向从服务器同步,再清空过期键值对
aof写入文件时,对过期的key会追加一条del命令,当执行AOF重写,会忽略过期key和del命令
应用场景
内存数据库rdb+aof数据不容易丢失
缓存数据器rdb性能高 不建议使用aof(性能差)
在数据还原时 有rdb+aof则还原aof,因为rdb会造成文件的丢失,aof相对数据要完整
2.rdb配置
redis-cli 登录redis
bgsave rdb保存命令
vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照
3.aof配置
vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
appendonly yes #启用AOF持久化
appendfilename "redis.aof" #指定AOF文件名
appendfsync everysec #每秒同步一次
4.设置完成后,重启服务
1. redis-cli shutdown
2. redis-server /opt/redis_cluster/redis_6379/conf/6379.conf