Redis in .NET Core 入门:(4) LIST和SET
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html
第2篇 String:https://www.cnblogs.com/cgzl/p/10297565.html
第3篇 Hash:https://www.cnblogs.com/cgzl/p/10301916.html
本文介绍Redis的List和SET,可能比较无聊,大多内容来自文档。
List
Redis的List是通过Linked List(链表)来实现的String集合,所以插入数据的速度很快。
但是缺点就是在数据量比较大的时候,访问某个数据的时间可能会很长,但针对这种情况,可以使用Sorted Set,这个一会再说。
下面看命令
LPUSH,RPUSH,LRANGE
LPUSH会向List的左侧(头部)添加一个新的元素,而RPUSH会把新的元素添加到List的右侧(尾部)。
LRANGE命令可以按索引区间显示List的一部分,它的个试试LRANGE List-Key start end。如果想显示整个list的话,这两个索引就可以是0和-1,其中-1就表示最后一个元素。

LPUSH和RPUSH,可以一次添加多个元素:

LPOP,RPOP
POP动作有两个效果:一个是获取到元素,另一个是把元素从list中删除。
LPOP就是从左边(头部)POP,RPOP就是从右边(尾部)POP。

而如果list里面已经没有元素了,这时执行pop就会返回null:

LTRIM
LTRIM命令可以对list进行剪切,其格式为LTRIM list-key start end,返回的就是剪切的部分:

BRPOP,BLPOP
BRPOP和BLPOP这两个命令与RPOP和LPOP类似,但是当list里没有元素的时候,它们可以几秒钟,如果这期间有新的元素添加到了list里,那么就会停止等待返回该元素,否则就会一直等到设定的时间结束,然后返回null:


例子里面的5 就是等待5秒。
而如果这个参数改为0,那就是永远等待:

而当一旦有新的元素加入的时候,该命令就会立即返回元素:

此外您还应该研究一下RPOPLPUSH和BRPOPLPUSH这两个命令。
自动创建和移除Key
通过Redis的命令我们可以发现,
当我们为集合添加元素的时候,如果集合的key不存在,那么Redis会为我们创建一个空的集合,然后再执行插入操作:

但要注意的是,不可以为不同类型且key已经存在的集合添加新的数据:

而从集合删除数据的时候,如果集合是空的,那么集合的Key就会自动销毁(Stream类型除外):

而针对只读命令(例如LLEN,返回list的长度)也具有同样的效果:

.NET Core 操练LIST
LPUSH,RPUSH,LRANGE

结果:

LPOP,RPOP

结果:

LTRIM

结果:

BRPOP,BLPOP
这个说来话长,暂不演示。
SET
Redis的SET是无序的String集合,它里面的元素是不会重复的。
SADD
SADD命令会添加新元素到SET:

可以看到一次性可以添加一个或多个元素。
SMEMBERS
SMEMBERS可以获取set里所有的元素:

但是每次调用得到结果的顺序是无法保证的。
SISMEMBER
SISMEMBER可以判断某个元素是否在set里:

返回1表示true,0表示false。
SINTER
SINTER可以查看多个set之间的交集:

SPOP
SPOP可以随机从set中移除一个或多个元素并返回:

SUNIONSTORE
把多个set合并到一个set里可以使用SUNIONSTORE,格式是sunionstore 目标set set1 set2 ...:

如果只有一个set需要合并的话,那么就相当于是复制:

SCARD
SCARD可以获取set的大小:
SRANDMEMBER
SRANDMEMBER可以随机获取set里面的元素,但是不会移除它们:

.NET Core 操练SET
SADD,SMEMBNERS

结果:

SISMEMBER

结果:

SINTER

结果:

SPOP

结果:

SUNIONSTORE

结果:

SCARD

结果:

SRANDMEMBER

结果:

Redis in .NET Core 入门:(4) LIST和SET的更多相关文章
- Redis in .NET Core 入门:(1) 安装和主要功能简介
Redis(https://redis.io/), 是一个内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 安装Redis 我很少在开发机中直接装各种数据库,我一般使用Docker,针对 ...
- Redis in .NET Core 入门:(5) Sorted SET
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565. ...
- Redis in .NET Core 入门:(3) Hash
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565. ...
- Redis in .NET Core 入门:(2) String
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html‘ 本文简单介绍一下Redis的常用数据类型String. 基本上都是文档上的内容,所以比较无聊.... ...
- Asp.Net SignalR 使用记录 技术回炉重造-总纲 动态类型dynamic转换为特定类型T的方案 通过对象方法获取委托_C#反射获取委托_ .net core入门-跨域访问配置
Asp.Net SignalR 使用记录 工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于A ...
- Redis 笔记 01:入门篇
Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
- CentOS开发ASP.NET Core入门教程
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9891346.html 因为之前一直没怎么玩过CentOS,大多数时间都是使用Win10进行开发,然后程序 ...
- ASP.NET Core 入门教程 10、ASP.NET Core 日志记录(NLog)入门
一.前言 1.本教程主要内容 ASP.NET Core + 内置日志组件记录控制台日志 ASP.NET Core + NLog 按天记录本地日志 ASP.NET Core + NLog 将日志按自定义 ...
- ASP.NET Core入门(一)
大家好,很荣幸您点了开此篇文章,和我一起来学习ASP.NET Core,此篇文字为<ASP.NET Core入门>系列中的第一篇,本系列将以一个博客系统为例,从第一行代码,到系统发布上线( ...
随机推荐
- jquery文本框内容实时监控
$("#A").bind("input propertychange", function () { $("#B").val($(this) ...
- Android开发之adb无法连接
2017/11/14 21:20 Unable to run 'adb': null 21:20 'E:\AndroidSDK\platform-tools\adb.exe start-server' ...
- DDGScreenShot--iOS 图片处理--多图片拼接 (swift)
写在前面 最近总结了关于图片处理相关的内容,之前在二三四五工作的时候,也做过关于这方面的分享,图片的处理内容很多,会分很多模块来讲解. 今天简单讲多图片的拼接. 上代码 func composeIma ...
- myEclipse 配置tomcat清除缓存
-Xms256m -Xmx512m -XX:MaxNewSize=64m -XX:MaxPermSize=128m
- Effective C++ 读书笔记(13-32)
条款一十三:以对象管理资源 1.把资源放进对象内,我们便可依赖C++的“析构函数自动调用机制“确保资源被释放. 2.auto_ptr是个”类指针对象“,也就是所谓”智能指针“,其析构函数自动对其所指对 ...
- 嵌入Python系列 | 调用Python模块中无参数函数
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...
- linux 文件传输 SCP
SCP :secure copy (remote file copy program) 也是一个基于SSH安全协议的文件传输命令.与sftp不同的是,它只提供主机间的文件传输功能,没有文件管理的功能. ...
- arcis api for js 值 3.17 本地部署
1. 引言 在学习 ArcGIS API 的过程中,如果我们引用在线的 API,在没有网络或者网络差的情况下,会影响到我们的学习效率,本篇文章就是为了解决这个问题.下载 ArcGIS API 之后,部 ...
- TCP入门与实例讲解
内容简介 TCP是TCP/IP协议栈的核心组成之一,对开发者来说,学习.掌握TCP非常重要. 本文主要内容包括:什么是TCP,为什么要学习TCP,TCP协议格式,通过实例讲解TCP的生命周期(建立连接 ...
- Python3.6安装报错 configure: error: no acceptable C compiler found in $PATH
安装python的时候出现如下的错误: [root@master ~]#./configure --prefix=/usr/local/python3.6 checking build system ...