
Redis是一个高性能的开源内存数据存储系统,可以用于存储和访问各种数据结构,例如字符串、哈希表、列表、集合等。在本文中,我们将介绍如何使用Redis获取极致的集合效果。
Redis的集合数据类型是一个无序的、不重复的元素集合。它支持添加、删除、查找和计算元素交集、并集、差集等操作。Redis的集合数据类型底层采用哈希表实现,所以它的插入、删除、查找等操作均具有常数级别的时间复杂度。
1. 创建集合
我们可以使用SADD命令向Redis中创建一个新的集合。例如,下面的代码向名为“myset”的集合中添加了三个元素:
SADD myset "hello"SADD myset "world"SADD myset "redis"
2. 查找元素
我们可以使用SISMEMBER命令来判断集合中是否存在某个元素。例如,下面的代码判断名为“myset”的集合中是否存在元素“hello”:
SISMEMBER myset "hello"
如果返回1,则表示存在该元素;如果返回0,则表示不存在该元素。
3. 删除元素
我们可以使用SREM命令来删除集合中的元素。例如,下面的代码删除名为“myset”的集合中的元素“redis”:
SREM myset "redis"
4. 获取集合元素个数

我们可以使用SCARD命令来获取集合中元素的个数。例如,下面的代码获取名为“myset”的集合中的元素个数:
SCARD myset
5. 获取集合所有元素
我们可以使用SMEMBERS命令获取集合中的所有元素。例如,下面的代码获取名为“myset”的集合中的所有元素:
SMEMBERS myset
6. 计算集合交集
我们可以使用SINTER命令计算多个集合的交集。例如,下面的代码计算名为“set1”和“set2”的两个集合的交集:
SADD set1 "hello"SADD set1 "redis"SADD set2 "world"SADD set2 "redis"SINTER set1 set2
返回的结果为包含“redis”的集合。
7. 计算集合并集
我们可以使用SUNION命令计算多个集合的并集。例如,下面的代码计算名为“set1”和“set2”的两个集合的并集:
SADD set1 "hello"SADD set1 "redis"SADD set2 "world"SADD set2 "redis"SUNION set1 set2
返回的结果为包含“hello”、“world”和“redis”的集合。
8. 计算集合差集
我们可以使用SDIFF命令计算两个集合的差集。例如,下面的代码计算名为“set1”和“set2”的两个集合的差集:
SADD set1 "hello"SADD set1 "redis"SADD set2 "world"SADD set2 "redis"SDIFF set1 set2
返回的结果为包含“hello”的集合。
Redis的集合数据类型具有高效、灵活、方便等特点,可以用于各种场景下的数据存储和操作。在实际开发中,我们可以根据具体需求灵活使用Redis集合数据类型,以获得极致的集合效果。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
redis添加数据set好还是add
set常见操作:(1)sadd向一个集合中添加一个元素。 例如:sadd set1 Hello(2)smembers查看集合中的所有元素。 例如:smembers set1(3)srem删除集合中一个指定的元素。 例如:srem set1 Hello(4)spop随机弹出set集合中德一个元素。 例如:spop set1(5)sdiff求两个集合的差集,比如sdiff set1 set2,表示保留set1中与set2不同的所有元素。 (6)sdiffstore将返回的差集存进一个集合。 例如:sdiffstore set3 set1 set2,表示把set1与set2的差集存进集合set3。 (7)sinter返回给定两个集合的交集。 例如:sinter set1 set2,表示返回set1和set2的交集。 (8)sinterstore将两个集合的交集存进一个集合。 例如:sinterstore set3 set1 set2,表示把set1和set2的交集存进集合set3。 (9)sunion返回给定两个集合的并集。 例如:sunion set1 set2,表示返回set1和set2的并集。 (10)sunionstore将两个集合的并集存进一个集合。 例如:sunionstore set3 set1 set2,表示把set1和set2的并集存进集合set3(11)smove从第一个key对应的set中移除member并添加到第二个对应的集合中。 例如:smove set1 set2 Hello,表示把set1中的Hello元素移动到set2中。 (12)scard返回key对应集合的元素的个数。 例如:scard set1。 (13)sismember判断某一个元素是否为集合的元素。 比如:sismember set1 Hello,表示判断Hello是否为set1的中的元素。 (14)srandmember随机返回名称为key的set的一个元素。 例如:srandmember set1。
什么是redis呢,求通俗解释
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 从2010年3月15日起,Redis的开发工作由VMware主持。 redis是一个key-value存储系统。 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。 在此基础上,redis支持各种不同方式的排序。 与memcached一样,为了保证效率,数据都是缓存在内存中。 区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。 它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。 [1]Redis支持主从同步。 数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。 这使得Redis可执行单层树复制。 从盘可以有意无意的对数据进行写操作。 由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。 同步对读取操作的可扩展性和数据冗余很有帮助。
redis集合和有序集合的区别
如果是使用的del命令.是会释放内存的.c//....187 void delCommand(redisClient *c)//....191 if (dbDelete(c- > db,c- > argv[j])) {//....131 int dbDelete(redisDb *db, robj *key) {//...140 return dictDelete(db- > dict,key- > ptr) == DICT_OK;
发表评论