`
iluoxuan
  • 浏览: 579762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

5:redis的set类型

 
阅读更多

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

 

 

分享到:
评论

相关推荐

    Redis面试指南:Redis面试宝典实用技巧分享

    2. Redis的数据类型: - String:基本的字符串类型,支持设置、获取和操作字符串。 - List:有序的元素集合,支持两端插入和弹出操作。 - Set:无序的唯一元素集合,支持添加、删除和查询元素。 - Hash:键值对...

    第 6 章: Redis 实现原理简介.rar

    - 字符串(String):最基础的数据类型,可以存储字符串、整数或浮点数。 - 哈希(Hash):用于存储键值对的集合,适合表示对象。 - 列表(List):双向链表结构,可进行顺序操作,如添加、删除元素。 - 集合(Set):...

    面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了!.doc

    Redis 是一种基于键值对(key-value)的 NoSQL 数据库,具有强大的性能和多种数据结构,支持 string、hash、list、set、zset 等多种数据结构。Redis 的应用场景非常广泛,包括缓存、计数器、排行榜、社交网络、消息...

    藏经阁-Redis交流.pdf

    * 集合(Set):Redis的集合类型可以存储多个字符串数据,用于存储无序集合数据。 * 有序集合(Zset):Redis的有序集合类型可以存储多个字符串数据,用于存储有序集合数据。 Redis的命令 Redis提供了多种命令,...

    Redis 50 道面试题及答案.docx

    * 支持多种数据结构:Redis 支持多种数据结构,如 String、List、Set、Sorted Set、Hashes 等。 * 持久化:Redis 支持持久化,可以将数据保存到硬盘上。 * 高可扩展性:Redis 可以水平扩展,添加更多的节点以提高...

    Redis学习手册带详细教程

    5. 多种语言支持:Redis支持多种编程语言,如Java、Python、C、C++等。 三、Redis的应用场景 1. 缓存系统:Redis可以用作缓存系统,提高系统的响应速度。 2. 消息队列:Redis可以用作消息队列,实现异步处理。 3. ...

    redis的简单描述和问题

    * 键值对数据库:Redis 是一个键值对数据库,使用字符串、Hash、List、Set、Sorted Set 等数据类型来存储数据。 * 单线程:Redis 是单线程的,但在网络请求时可以多线程。 * 低延迟、高性能:Redis 基于内存,使用 ...

    BAT大厂高频面试题:Redis+JVM+微服务+并发+Spring+MyBatis.docx

    Redis 提供了五种基本的数据类型: - 字符串(String) - 哈希(Hash) - 列表(List) - 集合(Set) - 有序集合(Sorted Set) 每种数据类型都有各自的特点和应用场景。 #### 3. 使用 Redis 有哪些好处? - **...

    redis 缓存技术学习笔记

    例如,在一次基准测试中,Redis的`set`操作可以达到每秒110,000次,`get`操作可以达到每秒81,000次。这样的性能对于大多数高并发的应用场景来说都是非常理想的。 #### 三、Redis与Memcached的主要区别 Redis与...

    redis-6.0.5.tar.gz

    7. **数据类型**:Redis支持五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Sorted Set(有序集合)。每种类型都有其特定的操作命令,比如`LPUSH`向列表头部添加元素,`SADD`向集合...

    Redis从初始到集群到哨兵模式

    1. 丰富的数据类型:Redis支持多种数据类型,包括String、Hash、List、Set、Sorted Set等。 2. 持久化:Redis提供了RDB和AOF两种持久化机制,以确保数据的安全和可靠性。 3. 事务支持:Redis支持弱事务,能够确保多...

    Redis基础资料,基础整理

    5. Sorted Set:有序集合类型,可以存储多个字符串或二进制数据,并且可以根据 score 排序。 Redis 的特点 1. 高性能:Redis 的读写速度非常高,可以达到 110000 次/s 的读速度和 81000 次/s 的写速度。 2. 丰富的...

    redis源码日志

    - **第5章:redis数据结构redisObject** - **结构**: 详细介绍`redisObject`类型及其字段。 - **属性**: `type`、`encoding`等属性的含义与用途。 - **第6章:redis数据结构sds** - **结构**: 简介`sds`(Simple...

    Redis 60 道面试题及答案.docx

    1. 支持丰富的数据类型:Redis支持5种数据类型,包括string、list、set、sorted set、hash等。 2. 速度快:Redis的速度比Memcached快很多。 3. 持久化:Redis可以持久化其数据。 Redis的数据类型 1. string:最...

    RedisInsight :Redis 官方可视化工具 下载 mac版

    可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能,功能非常强大! 总结 RedisInsight不愧是官方出品的可视化工具,感觉是目前用起来体验最好的Redis工具了!特别是对Redis新...

    redis面试题及答案

    **面试题5:如何解决Redis的并发竞争问题?** 答:Redis不支持分布式锁,但可以使用`SETNX`或`SET`命令的`nx`和`xx`选项模拟简单锁。此外,`Redisson`等客户端库提供了更完善的分布式锁实现。 **面试题6:Redis的...

    redis实用命令实战.pptx

    Redis 是一个高性能的、开源的 NoSQL 数据库,它支持多种数据类型,包括 List、Set、Map 等。下面是 Redis 实用命令实战的知识点总结: 一、List 类型 Redis 的 List 类型可以将数据存储成一个链表,并能对这个...

    中间件:Redis 之 Jedis的使用

    字符串是Redis中最基础的数据类型之一,Jedis提供了丰富的API来处理字符串: - **设置键值对**: ```java jedis.set("key", "value"); ``` - **获取键对应的值**: ```java String value = jedis.get("key");...

    redis64 for windows

    - 数据类型:Redis支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)等五种基本数据类型,满足不同应用场景的需求。 - 持久化:Redis提供了RDB和AOF两种持久化方式,确保在系统崩溃后...

    RedisInsight :Redis 官方可视化工具 下载 Windows版

    可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能,功能非常强大! 下面是RedisInsight的一张使用效果图,颜值不错! 总结 RedisInsight不愧是官方出品的可视化工具,感觉是...

Global site tag (gtag.js) - Google Analytics