Redis学习系列五Set(集合)
一、简介
Redis中的Set(集合)相当于C#中的HashSet,它内部的键值对时无序的、唯一的。用过Dictionary的都知道,Dictionary都知道,里面的每个键值对肯定是唯一的,因为键不允许重复.而Redis中的Set相当于一个特殊的字典,字典中所有的Value值都是null.当集合中最后一个元素被移除,该集合的内存会被回收.
二、用法
Redis中的Set集合可以用来存储某秒杀活动中,商品ID和幸运儿的ID,因为一件商品只能被一个用户抢到,不可能被两个用户同时抢到.
三、代码实战
代码还是基于前面文章中的代码
C#控制台:
给RedisClient.cs扩展如下方法:
/// <summary>
/// 异步向Set(集合)中添加键值对
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public static async Task<bool> SetAddAsync(RedisKey key, RedisValue value)
{
var db = GetDatabase();
return await db.SetAddAsync(key, value);
} /// <summary>
/// 异步获取对应键的所有成员,无序
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static async Task<RedisValue[]> SetMembersAsync(RedisKey key)
{
var db = GetDatabase();
return await db.SetMembersAsync(key);
}
注:这里还有很多Api没有介绍,可以自行了解
program.cs代码如下:
class Program
{
static Program()
{
//链式配置Redis
AppConfiguration.Current.ConfigureRedis<RedisConfig>();
} static void Main(string[] args)
{
StringSetGetAsync();
Console.ReadKey();
} static async void StringSetGetAsync()
{
var key = "测试商品Id";
var userId = Guid.NewGuid().ToString();
try
{
if (!await RedisClient.SetAddAsync(key, userId))
{
//注:这里最好不要抛异常,会影响后续操作,写日志更合理
Console.WriteLine("向Redis Set集合插入元素失败,同一个商品出现了多个中奖用户!");
}
//模拟重复插入
if (!await RedisClient.SetAddAsync(key, userId))
{
Console.WriteLine("向Redis Set集合插入元素失败,同一个商品出现了多个中奖用户!");
} //模拟继续插入
if (!await RedisClient.SetAddAsync(key, Guid.NewGuid().ToString()))
{
Console.WriteLine("向Redis Set集合插入元素失败,同一个商品出现了多个中奖用户!");
} if (!await RedisClient.SetAddAsync(key, Guid.NewGuid().ToString()))
{
Console.WriteLine("向Redis Set集合插入元素失败,同一个商品出现了多个中奖用户!");
} //获取指定键的所有成员,并输出
var members = await RedisClient.SetMembersAsync(key);
foreach (var member in members)
{
Console.WriteLine(member);
}
}
catch (Exception ex)
{
//记录日志
Console.WriteLine(ex.Message);
} }
}


Redis学习系列五Set(集合)的更多相关文章
- Python操作redis学习系列之(集合)set,redis set详解 (六)
# -*- coding: utf-8 -*- import redis r = redis.Redis(host=") 1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合 ...
- 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...
- 分布式缓存技术redis学习系列
分布式缓存技术redis学习系列(一)--redis简介以及linux上的安装以及操作redis问题整理 分布式缓存技术redis学习系列(二)--详细讲解redis数据结构(内存模型)以及常用命令 ...
- redis学习教程五《管道、分区》
redis学习教程五<管道.分区> 一:管道 Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻 ...
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- redis学习系列
redis学习系列 基本看完 最近在看redis的代码,简单记录下自己认为重要的点,自己写比较费时间的,我会把查到的资料贴出来方便查看 淘宝的redis内存分析 http://www.searchtb ...
- C# Redis学习系列三:Redis配置主从
Redis配置主从 主IP :端口 192.168.0.103 6666 从IP:端口 192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...
- scrapy爬虫学习系列五:图片的抓取和下载
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- redis 学习(7) -- 有序集合
redis 学习(7) -- 有序集合 zset 结构 有序集合:有序.不能包含重复元素 每个节点包含:score和value两个属性,根据score进行排序 如图: zset 重要 API 含义 命 ...
随机推荐
- PHP发起POST DELETE GET POST 请求
原文链接:http://blog.csdn.net/lengxue789/article/details/8254667 关于POST,DELETE,GET,POST请求 get:是用来取得数据.其要 ...
- BAT文件语法和技巧(bat文件的编写及使用)
源文链接:http://www.jb51.net/article/5828.htm 比较有用的东比较有用的东西 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们 ...
- 冬瓜头答疑:磁盘阵列内部FC-AL的性能问题
冬瓜头答疑:磁盘阵列内部FC-AL的性能问题 作者:冬瓜头出处:IT专家网2009-08-03 09:59 问: 大多数磁盘阵列都是通过两个控制器后端的端口,组成1/2/4条FC-AL环,来连接所 ...
- JQuery设置和去除disabled属性 与 display显示隐藏
//两种方法设置disabled属性 $('#areaSelect').attr("disabled",true); $('#areaSelect').attr("dis ...
- String、Stringbuffer、Stringbuilder三者之间的区别
1.首先说运行速度,速度由快到慢排列:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuil ...
- elasticsearch5环境搭建
1.下载ElasticSearch https://www.elastic.co/cn/downloads/elasticsearch#ga-release 因为是windows版本,所以下载zip即 ...
- NameNode工作机制
NameNode工作机制
- SRM470
250pt 给定1个最多16颜色的字符串(颜色可以重复),甲在最左边,乙在最右边.轮流操作,每次可以消除一种颜色. 给定一个k,问谁能最先消除完到位置k之间的障碍. 思路: 每个人肯定优先取对方没有的 ...
- 蒲公英: 一个提供App 存储、分发、Bug管理的网站
一.蒲公英内测应用, https://www.pgyer.com/ 内测应用,仅需两步: 将应用上传到网站,生成安装链接和二维码 用户在手机上打开安装链接,或扫码二维码,即可开始安装 二.蒲公英Bug ...
- intellij 快捷键整理
[常规] Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关 ...