使用sizemask来确保索引不越界
摘要:【使用sizemask来确保索引不越界】 在redis的字典实现中,有一个sizemask字段。 此字段的作用是当使用下标访问数据时,确保下标不越界。 如当前size为8时,sizemask为7(0x111)。当给定一个下标N时,将N与sizemask进行与操作后得出下标才是最终使用的下标...
阅读全文
Redis 字典的实现
摘要:【Redis 字典的实现】注意dict类型使用了两个指针,分别指向两个哈希表。其中, 0 号哈希表(ht[0])是字典主要使用的哈希表, 而 1 号哈希表(ht[1])则只有在程序对 0 号哈希表进行 rehash 时才使用。table属性是个数组, 数组的每个元素都是个指向dictEntry结构的...
阅读全文
Redis 键空间通知
摘要:【Redis 键空间通知】 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。以下是一些键空间通知发送的事件的例子:所有修改键的命令。所有接收到LPUSH命令的键。0号数据库中所有已过期的键。事件通过 Redis 的订阅与发布功能(pub/sub)...
阅读全文
Redis 集群二
摘要:【Redis 集群二】集群的客户端Redis 集群现阶段的一个问题是客户端实现很少。 以下是一些我知道的实现:redis-rb-cluster是我(@antirez)编写的 Ruby 实现, 用于作为其他实现的参考。 该实现是对redis-rb的一个简单包装, 高效地实现了与集群进行通讯所需的最少语...
阅读全文
Redis 集群
摘要:【Redis 集群】Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。Redis 集群提供了以下两个好处:将数据自动切分(split)到多个节点的能力。当集群中的一部分节点失效...
阅读全文
Redis Replication
摘要:【SLAVEOF命令】SLAVEOF host portSLAVEOF命令用于在 Redis 运行时动态地修改复制(replication)功能的行为。通过执行SLAVEOFhostport命令,可以将当前服务器转变为指定服务器的从属服务器(slave server)。如果当前服务器已经是某个主服务...
阅读全文
Redis AOF文件
摘要:【Redis AOF文件】1、关于AOFAOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得...
阅读全文
Redis RDB文件
摘要:【Redis RDB文件】1、RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。RDB 的优点RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份: 比如说,你可以在最近...
阅读全文
Redis服务器操作
摘要:【Redis服务器操作】1、TIME返回当前服务器时间。2、DBSIZE返回当前数据库的 key 的数量。3、LASTSAVE返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。4、BGSAVE在后台异步(Asynchronously)保存当前数据库的数据到磁盘。B...
阅读全文
Redis 发布/定阅
摘要:【Redis 发布/定阅】1、SUBSCRIBE channel [channel ...]订阅给定的一个或多个频道的信息。2、PSUBSCRIBE pattern [pattern ...]订阅一个或多个符合给定模式的频道。每个模式以*作为匹配符,比如it*匹配所有以it开头的频道(it.news...
阅读全文
Redis的强大之处
摘要:【Redis的强大之处】1、拥有对脚本的支持(此处是lua),脚本可选择性的缓存。2、提供HyperLogLog计数器。3、提供5种数据类型的全方位支持:List、Hash、Set、OrderedSet、String。4、 提供GEO地理位置类型的支持。5、提供命令行客户端直接操作数据库。6、支持定...
阅读全文
Redis 与 Lua Script
摘要:【Redis Script】1、EVAL script numkeys key [key ...] arg [arg ...]从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用EVAL命令对 Lua 脚本进行求值。script参数是一段 Lua 5.1 脚本程序,它会被运行在...
阅读全文
Redis 集合操作
摘要:【Redis 集合操作】1、SCARD key返回集合key的基数(集合中元素的数量)。2、SDIFFSTORE destination key [key ...]这个命令的作用和SDIFF类似,但它将结果保存到destination集合,而不是简单地返回结果集。如果destination集合已经存...
阅读全文
Redis List操作
摘要:【Redis List操作】1、LLEN key返回列表key的长度。如果key不存在,则key被解释为一个空列表,返回0.如果key不是列表类型,返回一个错误。2、MULTI标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由EXEC命令原子性(atomic)地执行。3...
阅读全文
Redis Scan命令
摘要:【Redis Scan命令】SCAN cursor [MATCH pattern] [COUNT count]SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements)...
阅读全文
Redis OBJECT命令
摘要:【Redis OBJECT命令】1、OBJECT subcommand [arguments [arguments]]OBJECT命令允许从内部察看给定key的 Redis 对象。它通常用在除错(debugging)或者了解为了节省空间而对key使用特殊编码的情况。当将Redis用作缓存程序时,你也...
阅读全文
KEY操作续
摘要:【KEY操作续】1、UMP key序列化给定key,并返回被序列化的值,使用RESTORE命令可以将这个值反序列化为 Redis 键。序列化生成的值有以下几个特点:它带有 64 位的校验和,用于检测错误,RESTORE在进行反序列化之前会先检查校验和。序列化的值不包括任何生存时间信息。返回值:如果k...
阅读全文
Redis Key操作
摘要:【Redis Key操作】1、GETSET key value将给定key的值设为value,并返回key的旧值(old value)。当key存在但不是字符串类型时,返回一个错误。2、RENAME key newkey将key改名为newkey。当key和newkey相同,或者key不存在时,返回...
阅读全文
Redis 位操作
摘要:【Redis 位操作】1、GETBIT key offset对key所储存的字符串值,获取指定偏移量上的位(bit)。当offset比字符串值的长度大,或者key不存在时,返回0。2、SETBIT key offset value对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。位的设...
阅读全文
Redis Set命令
摘要:【Redis Set命令】SET key value [EX seconds] [PX milliseconds] [NX|XX]将字符串值value关联到key。如果key已经持有其他值,SET就覆写旧值,无视类型。对于某个原本带有生存时间(TTL)的键来说, 当SET命令成功在这个键上执行时, ...
阅读全文