前言

简单介绍一下集合的基本结构和命令。

正文

集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一 样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过 索引下标获取元素。

一个集合最多可以存储232-1个元 素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并 集、差集,合理地使用好集合类型,能在实际开发中解决很多实际问题。

简单介绍一下命令:

sadd 提供添加程序:

srem 表示删除:

scard key 表示集合个数:

sismember key element 查看某个元素是否在集合中。

srandmember key count 随机从集合中取出几个数字。

spop key count 随机从集合中弹出几个数字。

上面也提及到了smembers 表示列出全部数据。

下面就是一些集合之间的操作了。

求两个集合的交集:

求两个集合的并集:

求多个集合的差集:

图片:

将交集、并集、差集的结果保存:

sinterstore destination key [key ...]
suionstore destination key [key ...]
sdiffstore destination key [key ...]

集合常用命令时间复杂度:

内部编码:

集合类型的内部编码有两种:

·intset(整数集合):当集合中的元素都是整数且元素个数小于set-max- intset-entries配置(默认512个)时,

Redis会选用intset来作为集合的内部实 现,从而减少内存的使用。

·hashtable(哈希表):当集合类型无法满足intset的条件时,Redis会使 用hashtable作为集合的内部实现

使用场景

集合类型比较典型的使用场景是标签(tag)。

例如一个用户可能对娱 乐、体育比较感兴趣,另一个用户可能对历史、新闻比较感兴趣,这些兴趣 点就是标签。

有了这些数据就可以得到喜欢同一个标签的人,以及用户的共 同喜好的标签,这些数据对于用户体验以及增强用户黏度比较重要。

例如一 个电子商务的网站会对不同标签的用户做不同类型的推荐,比如对数码产品 比较感兴趣的人,在各个页面或者通过邮件的形式给他们推荐最新的数码产 品,通常会为网站带来更多的利益。

示例:

给用户添加标签

sadd user:1:tags tag1 tag2 tag5 

sadd user:2:tags tag2 tag3 tag5 ... 

sadd user:k:tags tag1 tag2 tag4 ...

或者给标签添加用户:

sadd tag1:users user:1 user:3 

sadd tag2:users user:1 user:2 user:3 ... 

sadd tagk:users user:1 user:2 ...

删除用户标签:

srem user:1:tags tag1 tag5

删除标签下的用户:

srem tag1:users user:1 

srem tag5:users user:1

计算用户共同感兴趣的标签:

sinter user:1:tags user:2:tags

其他的一些需求:

sadd=Tagging(标签) 

·spop/srandmember=Random item(生成随机数,比如抽奖) 

·sadd+sinter=Social Graph(社交需求)

下一节有序集合。

redis 简单整理——redis 的集合基本结构和命令[五]的更多相关文章

  1. 一篇文章带你了解NoSql数据库——Redis简单入门

    一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...

  2. redis 学习(7) -- 有序集合

    redis 学习(7) -- 有序集合 zset 结构 有序集合:有序.不能包含重复元素 每个节点包含:score和value两个属性,根据score进行排序 如图: zset 重要 API 含义 命 ...

  3. Redis简单介绍

    redis简单介绍 Redis VS key-value缓存产品 Redis支持数据的持久化,能够将内存中的数据保持在磁盘中,重新启动的时候能够再次载入进行使用. Redis不只支持简单的key-va ...

  4. 面试简单整理之Redis

    179.redis 是什么?都有哪些使用场景? Redis是一个key-value存储系统. 缓存,消息队列,排行榜/计数器,分布式架构,做session共享 180.redis 有哪些功能? 181 ...

  5. Redis 简单介绍(知识整理笔记)

    前言: Redis 介绍:轻量级.Key-Value.内存数据库.支持持久化 Redis 数据结构:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorte ...

  6. springboot整合redis(简单整理)

    Redis安装与开启 我这里是在windows上练习,所以这里的安装是指在windows上的安装,操作非常简单,点击https://github.com/MicrosoftArchive/redis/ ...

  7. Redis 知识 整理

    简介 安装 启动 注意事项 使用命令 通用命令 数据结构 字符串(string) 哈希(hash) 队列(list) 集合(set) 有序集合(zset) 位图(bitcount) 事务 订阅与发布 ...

  8. redis简单应用

    启动和结束 --启动redis服务 E:\redis>redis-server.exe redis.windows.conf --结束redis服务 127.0.0.1:6379> shu ...

  9. redis(四)--简单实现Redis缓存中的排序功能

    在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发的应 ...

  10. redis简单使用

    主要参考资料:http://wiki.jikexueyuan.com/project/redis-guide/data-type.html一.redis 安装1.在官网下载安装包2.解压安装包 tar ...

随机推荐

  1. Java 家庭记账本

    1 public class FamliyAccount 2 { 3 4 public static void main(String[] args) 5 { 6 // TODO Auto-gener ...

  2. linux程序运行结果在打印到屏幕的同时写入文件

    1.使用script工具 script工具是一个非常使用的工具,可以把输出到终端的信息记录下来.使用方法如: (1)输入 script log.txt命令开始保存终端输出的信息 ,其中log.txt为 ...

  3. day06-JavaScript03

    JavaScript03 11.DOM 官方文档:https://www.w3school.com.cn/js/js_htmldom.asp 基本介绍: DOM全称是Document Object M ...

  4. 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版)

    <续九>无帐号打开了itrend研究版但是用不了.今次无帐号登陆itrend研究版可以使用行情. 演示三图 1. 首先成功在金融终端无帐号登陆成功. 2. 同理应用在itrend研究版,却 ...

  5. uniapp踩坑记录

    sessionStorage.setItem('token', data.msg)uni.setStorage('token', res.data); 搞了半天登录后直接通过获取getstorage获 ...

  6. spring mvc 给action添加事务不成功的原因

    spring springMVC ation事务管理 自己单独做了个小网站 但是发现action事务不起作用了 但是如果用service层就没问题 找了很多办法没解决 最后自己解决了 其实就是一个加载 ...

  7. FFmpeg介绍与编译

    目录 FFmpeg FFmpeg核心模块 FFmpeg编译 FFmpeg FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制 ...

  8. Welcome to YARP - 2.2 配置功能 - 配置提供者(Configuration Providers)

    目录 Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 ...

  9. PowerDesigner操作要点

    一.PowerDesigner解决name和code同步问题 工具-常规选项-General  Options-Dialog-Name to Code mirroring√去掉 二.PowerDesi ...

  10. ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

    先执行: flush privileges; 再执行修改密码命令,可以了: set password for root@localhost=password('你的密码');