redis-server --service-install 启动
redis.windows.conf 设置为自启动
reids-server --service-start 开机自启
redis-server --service-stop 关闭开机自启
需要wiondows连接linux下redis
61 # bind 127.0.0.1
80 protected-mode no
redis-cli 启动命令行
config set requirepass 密码 命令设置密码
string
incr string 实现自增
decrby string 3 减3
redis默认开启16个数据库
默认使用的是0号数据库 select 0(1)切换数据库
默认没有有效期;可以添加有效期
redis 通配符
randomkey 返回随机key名
exists key 判断是否存在key 返回1或0
type key 返回key储存的值的类型
rename key newkey 修改key名称(已存在的新名字时覆盖已有的key及value)
renamenx key newkey 修改key名称(已存在key就返回0 )
del key 删除key
move key 1 移动key到1数据库 默认有16个
SELECT 切换库 默认使用 0库
expire key int值
ttl key 查询有效期 -1永久(不存在的key也是返回 -1)
flushdb 清空key值
decrby key 8 自减
decr key 自减1
watch key1 监视 监视key是否发生改变
unwatch 结束监视
pkill -9 redis 杀掉所有进程
redis事务
开启muitl 执行语句 取消(不是回滚)discard 成功 exec
事务是队列的样子,事务前面对后面不对,前面会执行,不会全部回滚
watch key1 key2 监视 只要一个发生改变,所有的都不会执行
消息订阅
频道广播
publish news ‘today xxx’ 发布一个频道
subscribe news 接听news频道消息
psubscribe new* 通配接收 监听消息 通配
redis持久化
即把数据储存断电后不会丢失的设备中,通常是硬盘
主从:通过服务器保存和持久化。如mongodbreplication stts 配置
日志:操作生成相关日志,并通过日志来回复数据
couchdb对于数据内容,不修改,只追加,则文件本身就是日志,不会丢失的数据
rdb快照持久化 加粗表示可修改 config
每隔N分钟或者N次写操作。从内存数据形成rdb文件,压缩放在备份目录
redis-benchmark -n 100 执行100次命令 测试性能
rdb缺陷 没到时间不会有持久化
需配合aof效果更加 redis 2.4版本后实现的
aof是日志持久化、每条命令写在文本文件
反复操作一个key导致aof有一大堆当前key操作,我们可以实现aof重写
redis集群 主从复制
1主从备份,防止主机挂掉
2 完成读写分离,分担maser的任务
3任务分离,如从服分别分担备份 工作与计算工作
主服务器的rdb和aof复制内容给从服务,从服务器自动同步给主服务器
优先顺序从上到下
开三个服务器,2个从服务,1个主服务
主服务器开启save就关掉从服务器 aof也是一样
主服务器关掉3 save,因为有从服务器分担了 aof可要可不要
//新建从服务器redis
cp redis.conf redis6380.conf
cp redis.conf redis6380.conf
从服务1
修改redis6380.conf pidfile /var/run/redis6380.pid
port 6380
rdb修改 6380.rdb 分担rdb
设置开启修改为 slave of localhost 6379
从服务2 改第二从服务器
4改为yes
继续修改 6381 关掉rdb 两台从服务器,只需要一台有rdb就行
屏蔽到save
aof也不要产生 appendonly 改为no
启动服务 redis-server redis6389.conf redis-server redis.conf
连接服务器 redis-cli -p 6381
修改密码 conf 里面 打开passwd 并跟上密码
auth 密码
缓存雪崩原理
缓存失效时间集中,访问量大,导致没有缓存,直接连接点mysql;
缓存为为什么需要失效?回收内存,热数据,冷数据;
大量连接需要同样数据缓存
缓存命中率需要大于 》90%
解决方案 布隆过滤器
加锁,让一个线程调用db操作,写入缓存 ;其他线程等待
ddos攻击;模拟真实用户去请求
数据查询(唯一ID)放入过滤器
先到过滤器查找 返回 boot