`
bigboy
  • 浏览: 169992 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Redis sets操作

 
阅读更多

 

set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合

求交并差等操作,操作中key理解为集合的名字。 

 

Redis的set是string类型的无序集合。set元素最大可以包含(2的32次方)个元素。 

 

set的是通过hash table实现的,所以添加、删除和查找的复杂度都是O(1)。hash table会随

着添加或者删除自动的调整大小。需要注意的是调整hash table大小时候需要同步(获取写

锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted 

set 中使用了。关于set 集合类型除了基本的添加删除操作,其他有用的操作还包含集合的

取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns

中的好友推荐和blog的tag功能。

 

redis 127.0.0.1:6379> sadd myset hello 往set中添加元素

(integer) 1

redis 127.0.0.1:6379> sadd myset world

(integer) 1

redis 127.0.0.1:6379> sadd myset hello

(integer) 0

redis 127.0.0.1:6379> smembers myset 列出set中所有的元素

1) "world"

2) "hello"

redis 127.0.0.1:6379> srem myset hello 删除指定set中指定元素

(integer) 1

redis 127.0.0.1:6379> smembers myset

1) "world"

redis 127.0.0.1:6379> sadd myset1 one

(integer) 1

redis 127.0.0.1:6379> sadd myset1 two

(integer) 1

redis 127.0.0.1:6379> sadd myset1 three

(integer) 1

redis 127.0.0.1:6379> spop myset1 随机删除set中指定元素

"three"

redis 127.0.0.1:6379> smembers myset1

1) "two"

2) "one"

redis 127.0.0.1:6379> sadd myset2 one

(integer) 1

redis 127.0.0.1:6379> sadd muset2 four

(integer) 1

redis 127.0.0.1:6379> sadd myset2 four

(integer) 1

redis 127.0.0.1:6379> smembers myset2

1) "four"

2) "one"

redis 127.0.0.1:6379> sdiff myset1 myset2 返回2个集合差集的第一个元素

1) "two"

redis 127.0.0.1:6379> sdiff myset2 myset1

1) "four"

redis 127.0.0.1:6379> sdiffstore myset1 myset2 myset3 将2个集合的差集存到指定集合中

(integer) 2

redis 127.0.0.1:6379> smembers myset3

(empty list or set)

redis 127.0.0.1:6379> smembers myset1

1) "four"

2) "one"

redis 127.0.0.1:6379> smembers myset2

1) "four"

2) "one"

redis 127.0.0.1:6379> sadd  myset1 three

(integer) 1

redis 127.0.0.1:6379> smembers myset1

1) "three"

2) "four"

3) "one"

redis 127.0.0.1:6379> sinter myset1 myset2 获得2个集合的交集

1) "four"

2) "one"

redis 127.0.0.1:6379> sinterstore myset3 myset1 myset2 将2个集合的交集存入到第三个集合中

(integer) 2

redis 127.0.0.1:6379> smembers myset3

1) "four"

2) "one"

redis 127.0.0.1:6379> smembers myset1

1) "three"

2) "four"

3) "one"

redis 127.0.0.1:6379> sadd myset1 pengdi

(integer) 1

redis 127.0.0.1:6379> smembers myset1

1) "pengdi"

2) "three"

3) "four"

4) "one"

redis 127.0.0.1:6379> smembers myset2

1) "four"

2) "one"

redis 127.0.0.1:6379> sadd myset2 jenny

(integer) 1

redis 127.0.0.1:6379> smembers myset2

1) "jenny"

2) "four"

3) "one"

redis 127.0.0.1:6379> sunion myset2 myset1 获得2个集合的并集

1) "pengdi"

2) "three"

3) "four"

4) "jenny"

5) "one"

redis 127.0.0.1:6379> sunionstore myset3 myset1 myset2 将2个集合的并集存入到指定的集合中

(integer) 5

redis 127.0.0.1:6379> smembers myset3

1) "pengdi"

2) "jenny"

3) "four"

4) "three"

5) "one"

redis 127.0.0.1:6379> smove myset3 myset4 one 将集合myset3中的one元素删除并存入到myset4中

(integer) 1

redis 127.0.0.1:6379> smembers myset4

1) "one"

redis 127.0.0.1:6379> sismember myset4 two  测试集合中指定元素是否存在

(integer) 0

redis 127.0.0.1:6379> sismember myset4 one

(integer) 1

redis 127.0.0.1:6379> srandmember myset2 随机获取集合中的一个元素

"four"

 

分享到:
评论

相关推荐

    php的Redis类操作

    接下来,我们可以执行各种Redis操作: 1. **获取数据**:通过`get`方法获取指定键的值。 ```php $key = 'example_key'; $value = $redis->get($key); echo "Value for key '$key' is: $value\n"; ``` 2. **设置...

    ServiceStack.Redis操作工具类

    3. **基本数据类型操作**:ServiceStack.Redis支持Redis的所有基本数据类型,如字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)和哈希表(Hashes)。例如,你可以使用`Set`方法添加字符串...

    java-Redis操作

    Java与Redis的操作是现代Web应用中常见的数据存储和缓存技术结合。Redis是一个高性能的键值数据库,以其丰富的数据结构和高效的速度深受开发者喜爱。在Java应用程序中集成Redis,可以利用其特性进行快速读写,实现高...

    redis实战 红豆出品 兄弟连redis

    本知识点将从Redis的基本使用、数据类型及操作、常用命令、高级特性四个方面详细介绍Redis。 一、Redis基本使用 1.1 Key-Value存储系统简介 Key-Value存储系统是一种数据结构,它将数据存储为一系列的键值对。每...

    Redis命令参考手册完整版 中文PDF版.rar_Redis 入门操作_redis pdf_redis.pdf_redis中文

    以上内容只是Redis的部分核心知识点,完整的Redis命令参考手册会包含更详细的操作和使用案例,对于初学者来说,是深入了解和掌握Redis的宝贵资料。配合实践,你可以逐步提升对Redis的理解和使用技能。

    Redis使用+redis工具

    Redis支持丰富的数据类型,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。 Redis的使用通常涉及以下几个方面: 1. **安装与启动**:首先,你需要下载Redis的源码,通过...

    C# Redis操作demo

    以下是对"C# Redis操作demo"的详细解释: 首先,安装StackExchange.Redis库。在Visual Studio或Visual Studio Code中,你可以通过NuGet包管理器或使用.NET CLI命令`dotnet add package StackExchange.Redis`来添加...

    redis-windows-Redis7.0.0.zip

    首先,Redis支持多种数据类型,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。这些数据类型不仅满足基本的键值存储需求,还能处理更复杂的数据操作,如列表的推入...

    JAVA连接redis进行操作的DEMO源码(2016)

    在本文中,我们将深入探讨如何使用Java连接并操作Redis分布式缓存数据库。Redis是一个高性能的键值存储系统,常用于缓存、消息队列、事件发布/订阅等场景。Java作为广泛使用的编程语言,提供了丰富的客户端库来与...

    JAVA连接redis进行操作的DEMO源码.zip

    4. **数据类型操作**: Redis支持五种数据类型:字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。Jedis API提供了对应的方法,例如: - 哈希操作: ```java jedis.hset("hashKey...

    Redis和RedisDesktop

    Redis的数据类型包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets),这些数据结构提供了多样化的存储和操作方式。例如,字符串可以用来存储简单的键值对;哈希则适用于存储对象,...

    Redis学习资料

    Redis学习手册 Key操作命令 doc Redis学习手册 List数据类型 doc Redis学习手册 Set数据类型 doc Redis学习手册 Sorted Sets数据类型 doc Redis学习手册 String数据类型 doc Redis学习手册 主从复制 doc Redis学习...

    redis桌面链接工具redis-desktop

    Redis Desktop Manager(简称RDM)是一款强大的跨平台Redis数据库管理工具,它为用户提供了一个直观且用户友好的图形界面,使得开发者和运维人员能够轻松地连接到Redis服务器并进行高效的操作与管理。 #### 二、...

    C#操作Redis小Demo

    Redis支持多种数据类型,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。下面是一些常见操作的例子: **1. 存储和获取字符串:** ```csharp IDatabase db = redis....

    Redis命令操作.md

    ### Redis 命令操作知识点解析 #### 一、Redis简介 Redis是一个开源的、高性能的键值存储系统,常被用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合...

    redis-windows-7.2.1.zip

    1. **高性能**:Redis基于内存操作,数据读写速度非常快,支持多种数据结构如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)。 2. **持久化**:Redis提供了两种持久...

    Redis-7.0.12-Windows-x64

    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多...

    Redis链接工具(RedisDesktopManager)

    2. **键值浏览与编辑**:通过可视化的方式展示Redis中的键(keys)和值(values),支持多种数据类型如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)。可以方便地添加...

    Jedis操作redis代码示例

    本文将深入探讨如何使用Jedis进行Redis操作,并通过具体的代码示例来详细解析其API的使用。 首先,我们需要了解如何添加Jedis依赖到项目中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    redis服务端绿色版64位windows Redis-x64-3.2.100

    这个压缩包“redis服务端绿色版64位windows Redis-x64-3.2.100”包含了在Windows操作系统上运行Redis 3.2.100版本所需的64位组件。 一、Redis简介 Redis是一个开源(BSD许可),基于内存也支持持久化的日志型、Key-...

Global site tag (gtag.js) - Google Analytics