使用redis服务存放数据,发现在内存和磁盘都有,如何定义redis中的key

可以实现存放数据的有redis、memcache、ssdb等
redis能够实现持久化,将数据序列化到本地磁盘可供备份,有容灾的效果。当服务器断电或其他故障重新启动redis服务后,可以读取磁盘中被持久化的数据。
这一点我们可以通过redis前台启动观察,控制台上有日志记录(带有RDB字样的内容),这个过程就是将redis内存中的数据写到磁盘上。
为防止数据丢失,需要将 Redis 中的数据从内存中 dump 到磁盘,这就是持久化。Redis 提供两种持久化方式:RDB 和 AOF。Redis 允许两者结合,也允许两者同时关闭,默认使用RDB。
RDB持久化策略:
save 900 1  900秒内有一个key发生改变时执行序列化
save 300 10 300秒内有十个key发生改变时执行序列化
save 60 10000  60秒内有一万个key发生改变时执行序列化
AOF持久化:策略
# appendfsync always 总是序列化
# appendfsync everysec
# appendfsync no
显然AOF持久化数据完整性能更高,缺点是生成大量的日志文件。
2.memcache 不支持持久化操作,数据结构单一,只有string类型。
3.现在有些公司使用redis和ssdb组合的方式。
ssdb写的效率高,redis读的效率高,两者结合可以达到优势互补的效果,但是这也依赖一个lua脚本,两者共用一套客户端(redis-cli)。
4.redis中存储如果key相同那么就是执行更新操作,如何定义key才能保证数据的安全有效呢?
key取值不能过长(效率低)也不能过短(可读性差)
以user表为例,有主键id和username等字段
key == brand:id:1:username
set brand:id:1:username zhangsan 

猜你喜欢

转载自blog.csdn.net/weixin_42813765/article/details/81913778
今日推荐