Redis
alvin_666
golang
展开
-
Redis学习系列,基础数据结构,位图,分布式锁
一、redis基础数据结构redis中所有数据结构都是以唯一key作为名称,并通过key获取value数据,不同的是value的数据结构不同五种数据结构:string(字符串):使用非常广泛,常见的是存储用户信息。字符串是动态字符串,是可以修改的字符串,在内部使用预先分配冗余空间减少内存频繁分配字符串长度小于1MB时扩容是加倍,大于1MB时是扩容一次加1MB。最大长度是512MBlis...原创 2019-04-07 13:38:01 · 298 阅读 · 0 评论 -
Redis拓展篇----过期策略
Redis的过期策略Redis中的过期:Redis中所有的数据结构都可以设置过期时间,时间一到就会被自动删除。Redis为单线程,如何保证在删除过期key时保证线上的读写不出现卡顿?1、过期的key集合Redis中将每个设置了过期时间的key放入一个独立的字典中,Redis会定时遍历这个字典,来删除到期的key删除策略:主要是定时删除(集中处理)和惰性删除(零散处理)惰性删除:在客户端...原创 2019-06-23 14:49:44 · 204 阅读 · 0 评论 -
Redis学习拓展篇-----LRU算法
LRU产生的原因:解决Redis内存超出物理内存限制时,内存和磁盘产生频繁交换,导致Redis性能下降在生产环境中不允许出现交换行为,为了限制使用最大使用内存,Redis提供配置参数maxmemory用于限制内存超出期望大小实际内存超出maxmemory时Redis提供的可选策略: - noeviction:不会继续服务写请求(del除外),不影响读请求,好处保证数据不丢失。默认的淘汰策略...原创 2019-06-23 14:48:11 · 322 阅读 · 0 评论 -
Redis学习拓展篇---保护Redis
1、指令安全在Redis中有一些比较危险的指令 - keys导致Redis卡顿 - flushdb和flushall导致redis所有数据清空在redis中为了避免认为的误操作,配置文件中提供rename-command指令用于将危险指令修改成特殊的名字。比如:rename-command keys xxxx 在需要执行keys时就需要使用新的xxxx了也可以将将指令设置成空串,...原创 2019-06-23 14:47:41 · 228 阅读 · 0 评论 -
Redis学习拓展篇----懒惰删除
懒惰删除Redis内部除了一个主线程还有几个异步线程专门用作处理一些耗时的操作将Redis中的数据比作为一颗大树1、Redis为什么使用懒惰删除删除指令del会直接释放对象的内存,一般会很快,如果删除很大的key时删除操作会导致单线程卡顿,redis4.0中为了解决这个问题引入了unlink指令,可以对删除操作进行懒处理,丢给后台的线程来异步回收内存。多线程中安全性的保证:当要吧数据(大...原创 2019-06-09 20:37:37 · 358 阅读 · 0 评论 -
Redis学习拓展篇----Info指令
Info指令Info指令用于使我们可以知道Redis内部一系列运行参数Info指令显示分为9块:- Server:服务器运行的环境参数- Cliens:客户端相关信息- Memory:服务器运行内存统计数据- Persistence:持久化信息- Stats:通用统计数据- Replication:主从复制相关信息- CPU:CPU使用情况- Cluster:集群信息- Ke...原创 2019-06-02 15:56:14 · 207 阅读 · 0 评论 -
Redis学习集群篇-----Codis
Redis中的CodisCodis式redis集群方案,是一个代理中间件,和redis一样也使用Redis协议对外提供服务,接收到客户端指令然后转发给redis,是客户端和redis之间的中间代理Codis是无状态的服务,每个节点都是对等的1、Codis分片原理在Codis中默认将所有的key划分为1024个槽位(solt),在Codis中会对客户端传过来的key进行特定运算找到key的...原创 2019-05-26 13:00:02 · 438 阅读 · 0 评论 -
Redis学习集群篇----Sentinel 哨兵
Sentinel 哨兵Sentinel:Redis中高可用的,自动进行主从切换,Redis Sentinel集群可以看成是一个zookerper集群,是集群高可用的心脏Sentinel主要工作:负责持续监控主从节点的健康,如果主节点挂掉会会从新选择一个新的主节点(选一个最优从节点)客户端连接步骤:客户端----->sentinel集群------>通过sentinel查询主节...原创 2019-05-12 15:10:56 · 130 阅读 · 0 评论 -
Redis集群篇----Cluster
Cluster是redis中提供的集群方案Cluster集群中每一个节点负责集群的一部分数据,并且每个节点负责的数据多少可能不一样。每个节点相互连接组成一个对等的集群,之间使用二进制协议交互集群信息Cluster和Codis:Cluster和Codis不同的是前者是去中心化的Cluster将所有数据划分为16384个槽位,比codis的1024个槽位更加细致,每个节点负责一部分槽位,不...原创 2019-05-19 14:05:40 · 287 阅读 · 0 评论 -
Redis高级数据结构 HyperLogLog,布隆过滤器
Redis中的高级数据结构五、HyperLogLogHyperLogLog:redis高级数据结构,用于解决统计问题,提供不精确的去重计数方案(标准误差0.81%)1、使用方法pfadd:增加计数(和set的asdd用法一样,来一个往里面放一个)pfcount:获取计数(和scard的用法一样,直接获取计数)pfmerage:将多个pf计数累加再一起形成一个新的pf值2、使用Hype...原创 2019-04-21 15:28:59 · 1146 阅读 · 0 评论 -
Redis中面试常见的问题整理
1、Redis中数据结构与使用场景A、string(字符串)是key-value结构value可以是字符串,整数,浮点型主要应用与常规的key-value的缓存(这也是redis常见的使用)B、list(链表)链表中每一个节点都可以是一个字符串,并且节点中的内容可以重复,从链表的两端进行出队或入队操作主要应用:a、消息队列b、关注队列,粉丝队列等C、hash(散列)包含键值对...原创 2019-08-05 19:27:23 · 213 阅读 · 0 评论