Redis 的set是string类型的无序集合.set元素最大可以包含(2的32次方-1)个元素.set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1).hash table会随着添加或者删除自动的调整大小.需要注意的是调整hash table大小时候需要同步(获取写锁)会阻塞其他读写操作.可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set中使用了.关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union…
十五. 构造数据类型 ● 构造数据类型概念 Structured data types 构造数据类型 结构体(structure), 联合体/共用体 (union), 枚举类型(enumeration type), 要有意识这三者是数据类型 Union is also like structure, i.e. collection of different data types which are grouped together. Each element in a structure or…
原文地址:http://bridgeforyou.cn/2018/09/02/Redis-Dsitributed-Lock-2/ 单机版实现的局限性 在上一篇文章中,我们讨论了Redis分布式锁的实现,简单回顾下. 获取锁: set file:9527 ${random_value} NX EX ${timeout} 释放锁,调用lua脚本: if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del…
如同其它不论什么的编程语言一样,想要更深入的学习.必需要了解该门语言的数据类型与限定词. OC的数据类型例如以下: (1)int:整型:   int a;      int b=2;     int c=a; (2)float: 浮点型:   float a;      float b=0.1;    float c=a; (3)double:双精度:double num;     double num2=1.0;    double num3 = num2; (4)char :字符型:char…
原文链接:http://doc.redisfans.com/hash/index.html 学习前先明确一下概念,这里我们把Redis的key称作key(键),把数据结构hash中的key称为field(域). hdel key field[field...] 删除hash表中的一个或多个指定域,若key或field不存在则会忽略:例:hdel hk k1 k2. hexists key field 判断hash表中指定域是否存在,返回1,若key或field不存在则返回0:例:hexists…
上一节提到了 Redis 的持久性,也就是在服务器实例宕机或故障时,拥有再恢复的能力.但是在这个服务器实例宕机恢复期间,是无法接受新的数据请求.对于整体服务而言这是无法容忍的,因此我们可以使用多个服务器实例,在一个实例宕机中断时,另外的服务器实例可以继续对外提供服务,从而不中断业务.Redis 是如何做的呢?Redis 做法是增加冗余副本,将一份数据同时保存在多个实例上.那么如何保存各个实例之间的数据一致性呢?Redis 采用主从库读写分离模式来保证数据副本的一致性. 一.主从复制介绍 在 Re…
查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少时长 ttl key //-1是永久 -2是不存在 查看key的类型 type key 随机取出一个key randomkey 重命名key rename key newkey //如果key存在 直接覆盖 renamenx key newkey //如果key存在 则失败 返回0 设置一定时间的k…
redis的list类型其实就是一个每个子元素都是string类型的双向链表.所以[lr]push和[lr]pop命令的算法时间复杂度都是O(1).另外list会记录链表的长度.所以llen操作也是O(1).链表的最大长度是(2的32次方-1).我们可以通过push,pop操作从链表的头部或者尾部添加删除元素.这使得list既可以用作栈,也可以用作队列.有意思的是list的pop操作还有阻塞版本的.当我们[lr]pop一个list对象是,如果list是空,或者不存在,会立即返回nil.但是阻塞版…
string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象.从内部实现来看其实string可以看作byte数组,最大上限是1G字节.下面是string类型的定义. struct sdshdr {  long len;  long free;  char buf[]; }; buf是个char数组用于存贮实际的字符串内容.其实char和c#中的byte是等价的,都是一个字节.len是buf数组的长度,fr…
一.介绍 Redis hash是一个string类型的field和value的映射表,hash特别设于用于存储对象. Redis中每个hash可以存储232 - 1 键值对(40多亿). 基本命令: 添加/更新: hset key field value  (将hash表key中的字段field的值设为value) hsetnv key field value  (只有在字段field不存在时,设置hash表字段的值) hmset key field1 value1 [field2 value2…