set 的是通过 hash table 实现的,所以添加、删除和查找的复杂度都是 O(1)。hash table 会随
着添加或者删除自动的调整大小。需要注意的是调整 hash table 大小时候需要同步(获取写
锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在 sorted
set 中使用了。关于 set 集合类型除了基本的添加删除操作,其他有用的操作还包含集合的
取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现 sns
中的好友推荐和 blog 的 tag 功能
1:
redis 127.0.0.1:6378> sadd myset ljq (integer) 1 redis 127.0.0.1:6378> sadd myset ljq2 (integer) 1 redis 127.0.0.1:6378> sadd myset ljq3 //添加 (integer) 1 redis 127.0.0.1:6378> smembers myset 1) "ljq2" 2) "ljq3" 3) "ljq" redis 127.0.0.1:6378> srem myset ljq //删除某个 (integer) 1 redis 127.0.0.1:6378> smembers myset // 显示set 1) "ljq2" 2) "ljq3" redis 127.0.0.1:6378> spop myset // 随机删除一个 "ljq3" redis 127.0.0.1:6378> smembers myset 1) "ljq2" redis 127.0.0.1:6378> sadd myset ljq3 (integer) 1 redis 127.0.0.1:6378> sadd myset ljq4 (integer) 1 redis 127.0.0.1:6378> smembers myset 1) "ljq2" 2) "ljq4" 3) "ljq3" redis 127.0.0.1:6378> sadd myset2 ljq3 (integer) 1 redis 127.0.0.1:6378> sadd myset hello (integer) 1 redis 127.0.0.1:6378> sadd myset2 hiworkd (integer) 1 redis 127.0.0.1:6378> smembers myset2 1) "ljq3" 2) "hiworkd" //返回所有给定 key 与第一个 key 的差集 redis 127.0.0.1:6378> sdiff myset myset2 // 显示myset中和myset2不同的 1) "ljq2" 2) "hello" 3) "ljq4" redis 127.0.0.1:6378> sdiff myset2 myset // 显示myset2中和myset不同的 1) "hiworkd"
2:sdiffstore 返回所有给定 key 与第一个 key 的差集保存到另一个set中
redis 127.0.0.1:6378> smembers myset2 1) "hello" 2) "ljq3" 3) "ljq4" redis 127.0.0.1:6378> sdiffstore myset3 myset2 myset (integer) 1 redis 127.0.0.1:6378> smembers myset3 1) "hello"
3:交集sinter
redis 127.0.0.1:6378> sinter myset2 myset // 交集 1) "ljq4" 2) "ljq3" redis 127.0.0.1:6378> sinterstore myset4 myset2 myset //交集保存到myset4中 (integer) 2 redis 127.0.0.1:6378> smembers myset4 1) "ljq3" 2) "ljq4"
4:并集sunion
redis 127.0.0.1:6378> sunion myset6 myset myset5 // 并集 1) "one" 2) "ljq3" 3) "ljq4" 4) "two" redis 127.0.0.1:6378> smembers myset6 (empty list or set) redis 127.0.0.1:6378> sunionstore myset6 myset myset5 // 并集保存到myset6 (integer) 4 redis 127.0.0.1:6378> smembers myset6 1) "one" 2) "ljq3" 3) "ljq4"
5:smove从第一个 key 对应的 set 中移除 member 并添加到第二个对应 set 中
redis 127.0.0.1:6378> smembers myset6 1) "one" 2) "ljq3" 3) "ljq4" 4) "two" redis 127.0.0.1:6378> smove myset6 myset7 one // 删除myset6一个放到myset7 (integer) 1 redis 127.0.0.1:6378> smembers myset7 1) "one" redis 127.0.0.1:6378> smembers myset6 1) "ljq3" 2) "ljq4" 3) "two"
6:scard , sismember
redis 127.0.0.1:6378> smembers myset6 1) "ljq3" 2) "ljq4" 3) "two" redis 127.0.0.1:6378> scard myset6 //显示个数 (integer) 3 redis 127.0.0.1:6378> sismember myset6 ljq3 //判断是否存在 (integer) 1 redis 127.0.0.1:6378> sismember myset6 ljq77 (integer) 0
相关推荐
2. Redis的数据类型: - String:基本的字符串类型,支持设置、获取和操作字符串。 - List:有序的元素集合,支持两端插入和弹出操作。 - Set:无序的唯一元素集合,支持添加、删除和查询元素。 - Hash:键值对...
- 字符串(String):最基础的数据类型,可以存储字符串、整数或浮点数。 - 哈希(Hash):用于存储键值对的集合,适合表示对象。 - 列表(List):双向链表结构,可进行顺序操作,如添加、删除元素。 - 集合(Set):...
Redis 是一种基于键值对(key-value)的 NoSQL 数据库,具有强大的性能和多种数据结构,支持 string、hash、list、set、zset 等多种数据结构。Redis 的应用场景非常广泛,包括缓存、计数器、排行榜、社交网络、消息...
* 集合(Set):Redis的集合类型可以存储多个字符串数据,用于存储无序集合数据。 * 有序集合(Zset):Redis的有序集合类型可以存储多个字符串数据,用于存储有序集合数据。 Redis的命令 Redis提供了多种命令,...
* 支持多种数据结构:Redis 支持多种数据结构,如 String、List、Set、Sorted Set、Hashes 等。 * 持久化:Redis 支持持久化,可以将数据保存到硬盘上。 * 高可扩展性:Redis 可以水平扩展,添加更多的节点以提高...
5. 多种语言支持:Redis支持多种编程语言,如Java、Python、C、C++等。 三、Redis的应用场景 1. 缓存系统:Redis可以用作缓存系统,提高系统的响应速度。 2. 消息队列:Redis可以用作消息队列,实现异步处理。 3. ...
* 键值对数据库:Redis 是一个键值对数据库,使用字符串、Hash、List、Set、Sorted Set 等数据类型来存储数据。 * 单线程:Redis 是单线程的,但在网络请求时可以多线程。 * 低延迟、高性能:Redis 基于内存,使用 ...
Redis 提供了五种基本的数据类型: - 字符串(String) - 哈希(Hash) - 列表(List) - 集合(Set) - 有序集合(Sorted Set) 每种数据类型都有各自的特点和应用场景。 #### 3. 使用 Redis 有哪些好处? - **...
例如,在一次基准测试中,Redis的`set`操作可以达到每秒110,000次,`get`操作可以达到每秒81,000次。这样的性能对于大多数高并发的应用场景来说都是非常理想的。 #### 三、Redis与Memcached的主要区别 Redis与...
7. **数据类型**:Redis支持五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)。每种类型都有其特定的操作命令,比如`LPUSH`向列表头部添加元素,`SADD`向集合...
1. 丰富的数据类型:Redis支持多种数据类型,包括String、Hash、List、Set、Sorted Set等。 2. 持久化:Redis提供了RDB和AOF两种持久化机制,以确保数据的安全和可靠性。 3. 事务支持:Redis支持弱事务,能够确保多...
5. Sorted Set:有序集合类型,可以存储多个字符串或二进制数据,并且可以根据 score 排序。 Redis 的特点 1. 高性能:Redis 的读写速度非常高,可以达到 110000 次/s 的读速度和 81000 次/s 的写速度。 2. 丰富的...
- **第5章:redis数据结构redisObject** - **结构**: 详细介绍`redisObject`类型及其字段。 - **属性**: `type`、`encoding`等属性的含义与用途。 - **第6章:redis数据结构sds** - **结构**: 简介`sds`(Simple...
1. 支持丰富的数据类型:Redis支持5种数据类型,包括string、list、set、sorted set、hash等。 2. 速度快:Redis的速度比Memcached快很多。 3. 持久化:Redis可以持久化其数据。 Redis的数据类型 1. string:最...
可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能,功能非常强大! 总结 RedisInsight不愧是官方出品的可视化工具,感觉是目前用起来体验最好的Redis工具了!特别是对Redis新...
**面试题5:如何解决Redis的并发竞争问题?** 答:Redis不支持分布式锁,但可以使用`SETNX`或`SET`命令的`nx`和`xx`选项模拟简单锁。此外,`Redisson`等客户端库提供了更完善的分布式锁实现。 **面试题6:Redis的...
Redis 是一个高性能的、开源的 NoSQL 数据库,它支持多种数据类型,包括 List、Set、Map 等。下面是 Redis 实用命令实战的知识点总结: 一、List 类型 Redis 的 List 类型可以将数据存储成一个链表,并能对这个...
字符串是Redis中最基础的数据类型之一,Jedis提供了丰富的API来处理字符串: - **设置键值对**: ```java jedis.set("key", "value"); ``` - **获取键对应的值**: ```java String value = jedis.get("key");...
- 数据类型:Redis支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)等五种基本数据类型,满足不同应用场景的需求。 - 持久化:Redis提供了RDB和AOF两种持久化方式,确保在系统崩溃后...
可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能,功能非常强大! 下面是RedisInsight的一张使用效果图,颜值不错! 总结 RedisInsight不愧是官方出品的可视化工具,感觉是...