Redis数据类型优缺点持久化⽅式⽬录
1.Redis数据类型
1. 字符串
value的数据结构(数组)
字符串value数据结构类似于数组,采⽤与分配冗余空间来减少内存频繁分配
当字符串长度⼩于1M时,扩容就是加倍现有空间
如果字符串长度操作1M时,扩容时最多扩容1M空间,字符串最⼤长度为 512M
字符串的使⽤场景(缓存)
字符串⼀个常见的⽤途是缓存⽤户信息,我们将⽤户信息使⽤JSON序列化成字符串
取⽤户信息时会经过⼀次反序列化的过程
name: value (value=json.dumps([{‘11.12迟到’},{},{}]))
2. list(列表)
value的数据结构(双向链表)
列表的数据结构是双向链表,这意味着插⼊和删除的时间复杂度是0(1),索引的时间复杂度位0(n)
当列表弹出最后⼀个元素后,该数据结构会被⾃动删除,内存被回⼿
列表的使⽤场景(队列、栈)
3. hash(字典)
value的数据结构(HashMap)
redis中的字典也是HashMap(数组+列表)的⼆维结构
不同的是redis的字典的值只能是字符串
hash的使⽤场景(缓存)
hash结构也可以⽤来缓存⽤户信息,与字符串⼀次性全部序列化整个对象不同,hash可以对每个字段进⾏单独存储 这样可以部分获取⽤户信息,节约⽹络流量
hash也有缺点,hash结构的存储消耗要⾼于单个字符串字符串函数去重
info={“name”:“zhs”,“age”:18}
字符串存:info={"name":"zhs","age":18} ⼀次全部读取
hash:info={"name":"zhs", "age":18} hash 可以根据key取值
4. set(集合)
value的数据结构(字典)
redis中的集合相当于⼀个特殊的字典,字典的所有value都位null
当集合中的最后⼀个元素被移除后,数据结构会被⾃动删除,内存被回收
set使⽤场景
set结构可以⽤来存储某个活动中中奖的⽤户ID,因为有去重功能,可以保证同⼀⽤户不会中间两次
set 是⽆序集合
sadd key member 添加⼀个 string 元素到 key 对应 set 集合中,成功返回 1,如果元素以及 在集合中则返回 0,key 对应的 set 不存在则返回错误
继续添加,返回0表⽰添加失败,说明set集合,不允许添加重复元素
smembers smembers smembers key 返回 key 对应 set 的所有元素,结果是⽆序的
5. zset(有序集合)
value的数据结构(跳跃列表)
zset⼀⽅⾯是⼀个set,保证了内部的唯⼀性
另⼀⽅⾯它可以给每⼀个value赋予⼀个score,代表这个value的权重
zset内部实现⽤的是⼀种叫做“跳跃列表”的数据结构
zset最后⼀个元素被移除后,数据结构就会被⾃动删除,内存也会被回收
zset应⽤场景
粉丝列表:value(粉丝ID),score(关注时间),这样可以轻松按关注事件排序
学⽣成绩:value(学⽣ID),score(考试成绩),这样可以轻松对成绩排序
2.Redis优点
redis为什么快
单线程避免上下⽂切换
纯内存操作
⾮阻塞IO多路复⽤
缺点
内存限制,不能存海量数据
3.持久化⽅式
RDB(快照)
全量同步:从服务器有的数据全部丢弃,主服务器把所有数据发给他。
redis把磁盘中原有数据全部丢弃,然后把redis内存中数据全部重新写⼊磁盘
缺点:
会丢失数据(当磁盘数据丢弃,正在写⼊时如果出现故障会导致数据丢失)
优点:
整个Redis数据库将只包含⼀个⽂件,⼀旦系统出现灾难性故障,我们可以⾮常容易的进⾏恢复。
性能最⼤化,它仅需要fork出⼦进程,由⼦进程完成持久化⼯作,极⼤的避免服务进程执⾏IO操作了。
AOF
增量同步:主服务器只发送从服务器缺少的数据。
把所有的修改操作先写⼊⽇志中,然后逐条的执⾏最后就写⼊磁盘
缺点:
- 对于相同数量的数据集⽽⾔,AOF⽂件通常要⼤于RDB⽂件,RDB 在恢复⼤数据集时的速度⽐ AOF 的恢复速度要快。 - AOF在运⾏效率上往往会慢于RDB
优点:
- 数据安全性⾼,Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步
redis从主从同步应该采⽤哪种⽅式?
当主从刚连接的时候,进⾏全量同步;全量同步结束后,进⾏增量同步
当然,如果有需要,slave在任何时候都可以发起全量同步
redis的策略,如论如何,⾸先会尝试增量同步,如不成功,要求从机进⾏全量同步。
4. 智能dns
可以根据⽤户⽹络的出接⼝公⽹IP,解析出距离最近的服务器访问
nslookup www.baidu
tracert ip
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论