Redis学习笔记(五)- 数据类型之set类型

  Redis 的set是string类型的无序集合。set元素最大可以包含(2的32次方-1)个元素。set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1)。hash table会随着添加或者删除自动的调整大小。需要注意的是调整hash table大小时候需要同步(获取写锁)会阻塞其他读写操作。可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set中使用了。关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐和blog的tag功能。

  set相关命令:

  sadd key member 添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0

  scard key 返回set的元素个数,如果set是空或者key不存在返回0

  smembers key 返回key对应set的所有元素,结果是无序的

  sismember key member 判断member是否在set中,存在返回1,0表示不存在或者key不存在

  srandmember key 同spop,随机取set中的一个元素,但是不删除元素

  

  spop key 删除并返回key对应set中随机的一个元素,如果set是空或者key不存在返回nil

  srem key member 从key对应set中移除给定元素,成功返回1,如果member在集合中不存在或者key不存在返回0

  

  smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key不是set类型返回错误

  

  

时间: 2024-10-25 04:29:14

Redis学习笔记(五)- 数据类型之set类型的相关文章

Redis学习笔记08Redis数据类型之(1) 字符串类型

1.1.1. set 设置字符串类型的键值,如果键已存在,则之前的值被覆盖,不关注之前的键值的类型. 语法: SET key value [EX seconds] [PX milliseconds] [NX|XX] 参数: key  键名 value 键值 EX seconds - 过期时间,秒. PX milliseconds -- 过期时间,毫秒. NX -- 仅仅当键不存在时才设置. XX -- 仅仅当键已经存在时才设置. 返回值: OK:操作成功. nil:操作失败. 例子: redis

Redis学习笔记09Redis数据类型之(2) 哈希表类型

1.1.1. hset 向hash中添加键值对. 语法: HSET key field value 参数: key :键名称,键值为一个hash表对象. field:hash表中的键名. value:hash表中的键值. 返回值: 整数:1,成功添加了一个原来不存在的新的键对应的键值对. 0,成功的更新了一个原来存在的键对应的键值对. ERROR:key对应的对象存在,但是并不是哈希表类型. 例子: redis.coe2coe.me:6379> hset myhash  host redis.c

Redis学习笔记10Redis数据类型之(3) 链表类型

1.1.1. lpush 在链表的头部插入一个或多个值. 语法: LPUSH key value [value ...] 参数: key 键名.键值为一个链表. value  要插入的值. 返回值: 整数:在插入之后,链表的长度. ERROR:key对应的对象不是链表类型. 例子: redis.coe2coe.me:6379> lpush mylist host redis.coe2coe.me (integer) 2 redis.coe2coe.me:6379> lpush mylist p

Redis学习笔记13Redis数据类型之(6)HyperLogLogs类型

1.1.1. pfadd 向指定的hyperloglog中添加一个或多个元素.hyperloglog中重复的元素将被合并成一个元素. 语法: PFADD key element [element ...] 参数: key: 键名,键值为一个hyperloglog对象. element:待添加的元素. 返回值: 1:hyperloglog的基数评估变化了. 0: 没有变化. 例子: redis.coe2coe.me:6379> pfadd myhpp green blue yellow (inte

Redis 学习笔记五 常用php函数

PHPRedis的安装在这里: http://blog.csdn.net/xundh/article/details/46288277 键值操作 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //参数:connect(host,port,timeout) //timeout可以为空,在redis.conf里timeout默认300 //pconnect不会主动关闭的连接 key //写入值 $redis->set($work

Redis 学习笔记五 经常使用php函数

PHPRedis的安装在这里: http://blog.csdn.net/xundh/article/details/46288277 键值操作 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //參数:connect(host,port,timeout) //timeout能够为空,在redis.conf里timeout默认300 //pconnect不会主动关闭的连接 key //写入值 $redis->set($work

Swift学习笔记_数据类型_浮点类型

浮点类型 是有小数部分的数字.表示的范围比整数类型更大,可存储比Int类型更大或更小的数字. 提供了3种表示形式: (1)Float 表示32位浮点数,可精确到小数点后6位. (2)Double 表示64位浮点数,可精确到小数点后15位. (3)Float80 表示80位浮点数,可精确到小数点后17位. ※Float32和Float64分别是Float和Double的类型别名 var floatv:Float = 0.12345678912345  //0.1234568 var floatv2

Swift学习笔记_数据类型_整数类型

1 整数类型 整数就是没有小数部分的数字. 整数类型分为两种: (1)有符号整数类型:表示负整数.零.和正整数 (2)无符号整数类型:表示零.和正整数 有符号整数类型有5种表示方式: (1)Int8:在内存中占8位,表示的范围是:-128-127 (2)Int16:在内存中占16位,表示的范围是:-32768-32767 (3)Int32:在内存中占32位,表示的范围是:-2147483648-2147483647 (4)Int64:在内存中占64位,表示的范围是:-92233720368547

Swift学习笔记_数据类型_布尔类型

布尔类型 指逻辑上的,只能是真或者假.用Bool表示. 有两个布尔常量:true和false. 主要用于条件判断语句中, 如在需要使用Bool类型的地方使用了非布尔值,swift的类型安全机制会报错. var boolvalue1 = true var boolvalue2 = false var isFinished = true //type bool if isFinished {     print("Finished!") } else {     print("n

Redis学习笔记4-Redis配置具体解释

在Redis中直接启动redis-server服务时, 採用的是默认的配置文件.採用redis-server   xxx.conf 这种方式能够依照指定的配置文件来执行Redis服务. 依照本Redis学习笔记中Redis的依照方式依照后,Redis的配置文件是/etc/redis/6379.conf.以下是Redis2.8.9的配置文件各项的中文解释. #daemonize no 默认情况下, redis 不是在后台运行的.假设须要在后台运行,把该项的值更改为 yes daemonize ye