redis(笔记)
./redis-cli -a root 带密码链接 root 为我的密码
del key 删除key
keys * 查询 所有key
exist key key是否存在 成功返回1 失败Wie0
set k vale 设置键值对
setnx k v 不存在则加入 分布式锁
getrange k start end 截取字符串
ttl key 查询key的过期时间返回 -1 为永久(默认永久)
incrby keyname 增量值 key中村的数字加上指定的增量值(原子性)
dece kename 减值 不写增减值默认为1
expire key seconds 设置key过期时间 后面单位为秒 此时ttl key 返回到期时间
pexpire expire key milliseconds 时间为毫秒 同上
persist key 把KEY设置为永久
? 通配符
例如 有 user:1 user:2 user:3 先要都查出 可以用 keys user:?
rename key newkey 修改key名称
move key db 把key移到指定的数据库中(貌似有十几个)
type key 得到key类型
--------------------------------------应用场景----------------
1 限时优惠
2 网站数据缓存
3 手机验证码(验证码过期时间)
4 限制网站访客评率
---------------------
key 命名规范 不要太长不要太短
格式 user:123:password 一般用: sql 用_ 比较多
key 名称区分大小写
---------------------------------------
数据类型
hash 类似javabean user(id,name) 类似关系型数据库
例如 hset 表名 id idvalue 只能存一个
hmset 设置多个数据
hmget id name
hgetall key 得到集合
hdel key 要删除的子属性
-----------------------------------
redistemplate
需要redis。client 和 spring-data.redis包(这个是jpa吗)
list 类型
很重要的语法RpopLpush 一处最后一个元素 把最后一个元素添加到另一个列表
通常要实现队列功能
可以实现留言 粉丝 分页 热点新闻 关注列表等等
------------------------------------
set
sadd key member1(多个成员也ok)
smember key 查询set集合 无序存储
sismember key member 判断member是否存在集合中 可用于是否注册
srandmember key[count] 返回集合中的多个随机数
srem key member 删除hash元素
计算并交叉 共同关注共同洗好 统计IP
ZSET 不重复有序
用于排行榜
-------------
Redis 发布订阅
subscribe key 关注频道
publish key message 发布消息
即时聊天群聊功能 微信公众号
------多数据库管理-------------
select 数据库
move key 名称 数据库
flushdb 清楚数据库key
flushall 清楚所有数据库key
-----事物----------
watch 和unwatch
用于商品秒杀 一组命令要不都被执行要不都不执行 中间不被打断
-----数据淘汰策略
持久化---
RDB
和aof 持久化 数据不会丢失占用硬盘
---------------数据库缓存和数据库保存一致 修改后怎么保持一致
实时同步:
更新缓存是先更新数据库再把缓存设置过期(建议不要个您缓存而是设置过期如果删除 可能导致雪崩多个人同时访问数据库--他就会直接查数据库)
缓存雪崩
缓存穿透
@Cacheable 查询使用 Long需要转string
@CachePut 更新使用
@CacheEvict删除使用
@Caching 组合使用
--异步队列
用kafka消息中间件
3 主从复制使 用阿里canal
{"userEmail":"12345678", "userName": "wei.hu "}