随笔分类 - Cache[MC/REDIS]
摘要:工作中有用到Redis滤重队列。 原来的方法如下: 方法一 + 为了保证操作原子性,使用Redis执行Lua脚本。 + 在脚本中的逻辑是,如果队列不超过某个数值,进行一次lrem操作(队列使用list结构),然后将新元素入列。 优点: 简单,直观。 缺陷: 1. lrem的时间复杂度为O(N),N为
阅读全文
摘要:背景 最近写了一个定时任务,期望是同一时间只有一台机器运行即可。因为是应用是在集群环境下跑的,所以需要自己实现类一个简陋的Redis单机锁。 原理 主要是使用了Redis的SET NX特性,成功设置的那个客户端则被认为拿到了锁,没有设置成功的其他客户单则认为没有拿到锁。 在分布式环境下使用锁是挺危险
阅读全文
摘要:最近在做一些缓存改造的场景,有如下一些经验总结: 缓存版本: Ehcache:2.8.3 Guava:17.0 1. Ehcache支持持久化到本地磁盘,Guava不可以; 2. Ehcache有现成的集群解决方案,Guava没有。不过个人感觉比较鸡肋,对JVM级别的缓存来讲太重了; 3. Ehca
阅读全文
摘要:经过一个多月的业余时间,终于把 Redis 完整的撸了一遍,感谢峰哥推荐的书《Redis 设计与实现》,也谢谢作者把 Redis 解析的这么通俗易懂。 去年 10 月末入职的某厂是 Redis 的重度用户,所以才下决心把这个短板补下,以免跟不上节奏。 在边学边做的过程中,有很多收获,尤其是整体知...
阅读全文
摘要:通过执行 monitor 命令可以让客户端自己变成一个监视器,实时接收并打印当前处理的命令请求的相关信息。
阅读全文
摘要:Redis 的慢查询日志用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度。 服务器配置有两个相关选项: 1. slowlog log slower than 选项指定执行时间超过多少微妙的命令请求会被记录到日志上。如果设置为 0,则记录所有执行命令。
...
阅读全文
摘要:Redis 提供了 setbit、getbit、bitcount、bitop 四个命令用于处理二进制位数组。
setbit 命令用于为位数组指定偏移量上的二进制位设置值,偏移量从 0 开始计数。
getbit 命令用于获取位数组指定偏移量上的二进制位的值。
bitcount 命令用于统计位数组里面,...
阅读全文
摘要:sort 命令可以对列表键、集合键或有序集合键的值进行排序。sort 命令并不修改数据库值,只是输出有序。 sort 选项 by 选项,根据权重进行排序: alpha 选项,对包含字符串值的键进行排序 asc 选项和 desc 选项 默认情况下 sort 命令执行升序排序,以下命令是等价的...
阅读全文
摘要:Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令。
使用 eval 命令可以直接对输入的脚本求值: 使用 evalsha 命令则可以根据脚本的 sha1 校验和对脚本进行求值,但是这个命令至少被 eval 命...
阅读全文
摘要:Redis 事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断,会将事务中的所以命令都执行完毕才去处理其他客户端的命令请求。 事务的实现 事务开始 MULTI 命令意味着事务的开始。
事务从开始到结束包含三个阶段:事务开始、命令入...
阅读全文
摘要:客户端可以通过执行 subscribe 命令订阅一个或多个频道,每当有其他客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这条消息。
客户端还可以通过执行 psubscribe 命令订阅一个或多个模式,消息也会被发送给与频道相匹配模式的订阅者。 频道的订阅与退订
当一个客户端执行 subs...
阅读全文
摘要:1.复制 执行 命令或者设置 选项,让一个服务器去复制另外一个服务器。 旧版复制功能的实现(Redis 2.8 之前的版本) 复制功能分为 和 两个操作。 同步(sync) 用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。 命令执行了以下操作: 1. 从向主发送 命令; 2. 主收到
阅读全文
摘要:1. 数据库
1. 服务器中的数据库
Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库: 2. 切换数据库
每个redis客户端都有自己的目标...
阅读全文
摘要:1. String(SDS)
Redis使用自定义的一种字符串结构SDS来作为字符串的表示。 在如上操作中,name(key)和liushijie(key)就存储在SDS中。
SDS数据结构如下: SDS遵循C字符串以'\0'空字符串结尾的惯例,所以 的内部值为
'l' 'i' 'u' '...
阅读全文
摘要:
本文主要简单讲了Redis基本操作、I/O模型、其他特性、为啥快?、数据同步机制、数据过期机制、会不会有延迟、实例挂了会如何等内容,可以作为一个使用Redis的简单参考。
阅读全文
![](http://images2015.cnblogs.com/blog/84797/201509/84797-20150905162244014-1927015462.jpg)
摘要:Linux Redis Server之CPU充分利用 不知道大家有没有注意到你们公司的集群配置是否是有一种配置是这样的:
多个Redis Server分布在同一个节点,只是端口不同,如果有的话,应该是有很大几率是做过优化。只是猜测,请自行验证。:] Redis处理指令的时候是单线程的,可以为R...
阅读全文
摘要:关于memcached和redis的使用场景,根据大神们的讨论和我在网上查到的资料,总结一下:两者对比:redis提供数据持久化功能,memcached无持久化;redis的数据结构比memcached要丰富,能完成场景以外的事情;memcached的单个key限制在250B,value限制在1MB...
阅读全文
摘要:此文根据【QCON高可用架构群】分享内容,由群内【编辑组】志愿整理,转发请注明出处。苏东旭,Ping CAP CTO,Codis作者 开源项目Codis的co-author黄东旭,之前在豌豆荚从事infrastructure相关的工作。现在在创业公司PingCAP。本次分享的内容主要包括五个大部...
阅读全文