1.redis特性
redis特性
基于内存
数据持久化(快照,AOF)
主从复制
集群
支持更多的数据类型
支持消息订阅
redis单线程,只能使用1个cpu使用,每秒能承受50万并发
2.redis安装
yum install epel-release -y
yum install redis -y
systemctl start redis
systemctl enable redis
3.redis数据类型
redis数据类型
字符串
set ip 1.1.1.1 //设置键ip的值是1.1.1.1
get ip //获取键ip的值
列表
集合
有序集合
哈希
4.redis认证实现
#vim /etc/redis.conf
requirepass PASSWORD
#redis-cli
auth PASSWORD
5.redis清空数据库
flushdb:清空当前库
flushall:清空所有库
6.redis事务
通过multi,exec,watch等命令实现事务功能;将一个或多个命令归为一个操作提请服务器按顺序执行的机制;不支持回滚操作
multi :启动一个事务
exec :执行事务,一次性将事务中的所有操作执行完成后返回客户端;命令先放在队列中,通过exec一次性提交和执行所有命令
watch:乐观锁,在exec命令执行之前,用于监视指定数量键;如果监视中的某任意键数据被修改,则服务器拒绝执行事务;
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ip 192.168.1.1
QUEUED
127.0.0.1:6379> get ip
QUEUED
127.0.0.1:6379> set port 8080
QUEUED
127.0.0.1:6379> get port
QUEUED
127.0.0.1:6379> exec
7.redis命令
client list //获取客户端连接信息
client kill ip:port //杀死客户端连接
info //查看服务器状态信息,使用的CPU,内存等信息 client kill 127.0.0.1:57366
config resetstat //重置info状态信息
config set parameter value //设置配置文件的参数和值到内存中,临时生效 config set requirepass redhat 添加认证
config rewrite //保存修改的配置文件参数和值到硬盘中,永久生效
dbsize //查看数据库的所有键数量
save //同步,内存数据保存到硬盘中,在主线程中保存快照,此时会阻塞所有客户端请求
bgsave //异步,内存数据保存到硬盘中
keys * //获取所有的键
8.redis 发布与订阅(publish/subscribe),消息队列
publish:生产者,指明向频道发布消息;
subscribe :消费者,订阅一个或多个队列
unsubscribe :退订此前订阅的频道
127.0.0.1:6379> subscribe news //订阅news频道
127.0.0.1:6379> publish news hello //向news这个频道发送hello消息
9.redis持久化:内存数据保存到硬盘中,两种方式RDB和AOF
RDB:snapshot,快照,二进制格式;按照事先定制的策略,周期性将数据保存至磁盘;数据文件默认为dump.rdb;客户端也可以使用save或bgsave命令启动快照保存机制
AOF:Append Only file 记录每一次写操作至指定的文件尾部实现持久化;当redis重启时,可通过重新执行文件中的命令在内存重建数据库
RDB配置文件
save 900 1 //900秒有1个key变化就保存到磁盘中
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/var/lib/redis"
关闭RDB:save ""
AOF在配置文件相关参数
appendonly no //开启aof功能,no为不开启
appendfilename "appendonly.aof" //AOF文件名
appendfsync everysec //每一秒写一次
no-appendfsync-on-rewrite no //重写是否调用rsync
auto-aof-rewrite-percentage 100 //当前上次重写两被,触发一次重写操作
auto-aof-rewrite-min-size 64mb //触发重写最小值
aof-load-truncated yes //