学习 Redis Set(集合)

学习 Redis Set(集合)

 

import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.core.ScanOptions.ScanOptionsBuilder;

public class TestRedisSet {
	
	private static JedisConnectionFactory getJedisConnectionFactory() {
		JedisConnectionFactory jcf = new JedisConnectionFactory();
		jcf.setHostName("127.0.0.1");
		jcf.setPort(6379);
		jcf.setPassword("123");
		jcf.afterPropertiesSet();
		return jcf;
	}

	private static RedisConnection getRedisConnection() {
		return getJedisConnectionFactory().getConnection();
	}

	public static void main(String[] args) {
		RedisConnection rc = getRedisConnection();
		
		//SADD 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
		long sAdd = rc.sAdd("man".getBytes(), 
				"a".getBytes(), 
				"b".getBytes(),
				"c".getBytes(), 
				"c".getBytes(), 
				"d".getBytes(), 
				"e".getBytes(),
				"f".getBytes());
		System.out.println("SADD [" + sAdd + "]");
		
		//SMEMBERS 返回集合 key 中的所有成员。
		Set<byte[]> sMembers = rc.sMembers("man".getBytes());
		Iterator<byte[]> itr = sMembers.iterator();
		while (itr.hasNext()) {
			System.out.println("SMEMBERS [" + new String(itr.next()) + "]");
		}
		
		//SCARD 返回集合 key 的基数(集合中元素的数量)。
		long sCard = rc.sCard("man".getBytes());
		System.out.println("SCARD [" + sCard + "]");
		
		//SDIFF
		Set<byte[]> sDiff = rc.sDiff("aset".getBytes(), "bset".getBytes());
		Iterator<byte[]> sDiffItr = sDiff.iterator();
		while (sDiffItr.hasNext()) {
			System.out.println("SDIFF [" + new String(sDiffItr.next()) + "]");
		}
		
		//SDIFFSTORE 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
		long sDiffStore = rc.sDiffStore(
				"cset".getBytes(), 
				"aset".getBytes(), 
				"bset".getBytes());
		System.out.println("SDIFFSTORE [" + sDiffStore + "]");
		
		//SINTER 返回一个集合的全部成员,该集合是所有给定集合的交集。
		Set<byte[]> sInter = rc.sInter("aset".getBytes(), "bset".getBytes());
		Iterator<byte[]> itrSInter = sInter.iterator();
		while (itrSInter.hasNext()) {
			System.out.println("SINTER [" + new String(itrSInter.next()) + "]");
		}
		
		//SINTERSTORE
		long sInterStore = rc.sInterStore(
				"dset".getBytes(), 
				"aset".getBytes(), 
				"bset".getBytes());
		System.out.println("SINTERSTORE [" + sInterStore + "]");
		
		//SISMEMBER 判断 member 元素是否集合 key 的成员。
		boolean sIsMember = rc.sIsMember("man".getBytes(), "a".getBytes());
		System.out.println("SISMEMBER [" + sIsMember + "]");
		
		//SMOVE 将 member 元素从 source 集合移动到 destination 集合。
		boolean sMove = rc.sMove("man".getBytes(), "men".getBytes(), "f".getBytes());
		System.out.println("SMOVE [" + sMove + "]");
		
		//SPOP 移除并返回集合中的一个随机元素。
		byte[] sPop = rc.sPop("man".getBytes());
		System.out.println("SPOP [" + new String(sPop) + "]");
		
		//SRANDMEMBER 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
		/**
		 	从 Redis 2.6 版本开始, SRANDMEMBER 命令接受可选的 count 参数:
			如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,
			数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
			如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
		*/
		byte[] sRandMember = rc.sRandMember("man".getBytes());
		System.out.println("SRANDMEMBER [" + new String(sRandMember) + "]");
		
		List<byte[]> sRandMemberListP = rc.sRandMember("man".getBytes(), 2);
		for (byte[] value : sRandMemberListP) {
			System.out.println("sRandMemberListP [" + new String(value) + "]");
		}
		
		List<byte[]> sRandMemberListC = rc.sRandMember("man".getBytes(), -4);
		for (byte[] value : sRandMemberListC) {
			System.out.println("sRandMemberListC [" + new String(value) + "]");
		}
		
		//SREM 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
		long sRem = rc.sRem("man".getBytes(), "a".getBytes(), "b".getBytes());
		System.out.println("SREM [" + sRem + "]");
		
		//SUNION 返回一个集合的全部成员,该集合是所有给定集合的并集。
		Set<byte[]> sUnion = rc.sUnion("aset".getBytes(), "bset".getBytes());
		Iterator<byte[]> itrSUnion = sUnion.iterator();
		while (itrSUnion.hasNext()) {
			System.out.println("SUNION [" + new String(itrSUnion.next()) + "]");
		}
		
		//SUNIONSTORE 这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
		long sUnionStore = rc.sUnionStore("eset".getBytes(), "aset".getBytes(), "bset".getBytes());
		System.out.println("SUNIONSTORE [" + sUnionStore + "]");
		
		//SSCAN
		ScanOptionsBuilder sob = ScanOptions.scanOptions().count(1);
		ScanOptions options = sob.build();
		Cursor<byte[]>  sScan = rc.sScan("man".getBytes(), options);
		while (sScan.hasNext()) {
			System.out.println("SSCAN [" + new String(sScan.next()) + "]");
		}
		
	}

}

 

图像去模糊(二)——Richardson–Lucy算法 Richardson Lucy Algorithm(Richardson-Lucy算法详解及效果实例) 阅读详情

相关推荐

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 261

Redis研究SCAN

SCAN 命令用于迭代当前数据库中的数据库键。 SSCAN 命令用于迭代集合键中的元素。 HSCAN 命令用于迭代哈希键中的键值对。 ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。 SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为

逆行者 537

小米手机安装Burp证书失败原因与DER格式改造指南

CA证书是HTTPS抓包和移动安全测试的基础组件,其本质是遵循X.509标准的数字凭证,依赖ASN.1/DER编码格式与完整证书链实现可信验证。Android系统默认支持PEM和DER两种编码,但MIUI自14版本起强化安全策略,仅识别DER二进制格式,并强制校验Subject Alternative Name(SAN)、Basic Constraints及证书链完整性。这种企业级加固逻辑导致Burp Suite导出的PEM格式.cer文件在小米设备上‘安装成功但无效’。本文聚焦证书格式转换、SAN字段注入

weixin_33646989的博客 625

SpringBoot引入Redis报org.springframework.data.redis.core.RedisTemplate类找不到错误

加上此注解就好了

yuyeqianhen的博客 6283

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6737

Avellaneda & Stoikov’s market-making strategy 工程化处理

前2篇文章详细介绍了AS存货模型的做市策略,这次对于这些公式里面一些希腊字母的取值是如何计算的,如何做工程化并应用到生产环境中做一些说明。这个里面有一些重要参数:很直观,可以直接取值的有:s = current market mid price (中间价,也就是【最佳卖价+最佳买价】/2)q = quantity of assets in inventory of base asset (也就是买入多少价值的股票数量)

weixin_42480337的博客 7070

使用java scan 大量的redis的key

1、redis配置 import com.soul.data.lettuce.config.AbstractSpringDataRedisConfig; import com.soul.data.redis.core.StringRedisTemplate; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.interceptor.KeyGenerator; import

微信公众号:一颗向上的草莓 2481

HRNet 【demo 复现过程】

Deep High-Resolution Representation Learning for Human Pose Estimation

qq_45257495的博客 5558

【Redis x Spring】使用 SCAN 命令搜索缓存

发现维护的项目中有个用户登录时间的缓存没有设置过期时间,导致产线环境的 Redis 中存在大量永不过期的废弃 Key。KEYS命令虽然可以批量查询匹配的缓存 Key ,但是数据量大时会非常慢,而且很容易造成服务器卡顿,进而影响其它正常的请求。所以产线环境中一般会禁用这个命令,以防止开发人员误操作。这里可以采用SCAN命令来实现类似的效果。关于SCAN命令的详细说明可以参考官方文档。cursorcursorSpring 中的并没有直接提供SCAN命令的封装,但还是可以在中执行这个命令。scan()

Java技术攻略的博客 1410

点云从入门到精通技术详解100篇-基于点云语义分割的电力线提取及聚类研究

在现代社会,电力一直扮演着最重要的角色之一。它不仅与人民的生活息息相关,更是一个国家发展的命脉。近年来,随着我国各特高压输电线路建成(比如2022年1月份白鹤滩江苏特高压输电线路的放线)以及电网规模的不断扩大,我国年发电量稳步上升,人民的生活水平越来越高。我国土地辽阔,输电线路分布广泛,再加上地形环境复杂多样,电力线可能遭受风吹雨晒甚至是冰雪寒灾的影响。因此,为了保障电力线的可靠供电,防止停电意外发生,电力部门要定期对输电线路进行检查。目前我国主要。

getusushu的博客 1010

51-14 Retentive Network,RetNet 多尺度保留机制序列建模论文精读

RetNet 提出了多尺度保留机制序列建模,该机制支持三种计算范式,即并行、循环和分块循环。RetNet有更好的全局注意力建模、高效的计算效率、对遮挡的鲁棒性、支持基于注意力的图像生成、与置信度相关的门控机制和多任务学习等特点,对不同视觉任务可以共享历史注意力记忆,可以同时进行分类、分割、检测等任务。RetNet在视觉领域应该有广阔的应用前景。

AIgraphX 1614

Scan的使用方式以及Spring redis的坑

SpringRedisTemplate针对这个Scan进行了封装,示例使用(针对最新库spring-data-redis-1.8.1.RELEASE): Set<Object> execute = redisTemplate.execute(new RedisCallback<Set<Object>>() { @Override public Set<Object> doInRedis(RedisConnection connection)...

那些年的代码 2055

InvocationException: GraphViz‘s executables not found【BUG已解决】

在机器学习框架中遇到了一个bug:安装了GraphViz模块后,在对着sklearn的决策树文档操作输出决策树模型结果时,还是爆出了如下的错误: 报错位置为: 报错语句为:网上很多答案告诉我们,要我们安装GraphViz模块,然而并不对! 如下,我安装了GraphViz,但是还是报错了。 所以说问题不在这,我查阅质料发现,改正这个bug的方法有一个:下文详细描述。解决bug为: 1.去graphviz.官方下载自己电脑符合的操作系统的安装包:2,安装的时候,记住自己安装在电脑里的位置:以我的电脑为例,我的

一键难忘的博客 3969

Redis 源码学习记录:集合 (set)

无序列表:intset,dict ;有序列表:ziplist,skiplist

m0_73096566的博客 1188

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python操作redis set_Python操作redis学习系列之(集合)set,redis set详解 (六)

#-*- coding: utf-8 -*-importredisr= redis.Redis(host="126.56.74.190",port=639,password="66666666")1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。当集合 key 不是集合类型时,返回一个错误。pr...

weixin_39640203的博客 181

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

redis学习-16- Redis set集合操作

redis学习-16- Redis set集合操作

时光 1399

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Redis关于Set及Zset集合命令的学习

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 sadd set value..:向set集合中添加一个或者多个元素 127.0.0.1:6379> sadd myset zhangsan (integer) 1 127.0.0.1:6379> sadd myset lisi wangwu (integer) 2 ******************

怕什么真理无穷,进一寸有一寸的欢喜。即使开了一辆老掉牙的破车,只要在前行就好,偶尔吹点小风,这就是幸 994

Redis学习笔记-Set集合(2)

Redis Set集合内部编码会根据元素类型和数量自动选择intset或hashtable。当元素均为整数且数量≤512时使用intset节省内存,否则采用hashtable。Set集合典型应用场景是标签系统,可实现用户标签管理、共同兴趣计算等功能。通过SADD/SREM等命令可以方便地添加/删除用户标签,SINTER则可计算用户间的共同标签,适用于个性化推荐等场景。

zfnww的博客 359

Redis学习(四)set集合

一、概述 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232- 1 (4294967295, 每个集合可存储40多亿个成员)。 二、常用命令 示例:sadd key val1...valn 用法:将一个或多个成...

ljm_c_bok的博客 207

redis学习(五) redis set集合操作

redis set集合操作 1 向set集合添加元素 sadd [key] [value1] [value2] [......] 2 删除set集合的元素 srem [key] [value] 3 pop出一个随机元素 spop [key] 4 返回一个随机元素,但并不删除 srandmember [key] 5 查看所有元素 smembers [key] ...

文若书生的专栏 5072

redis学习:set无需集合

文章问题导向 redis的list如何操作?使用场景有哪些? 如果你都有了答案,可以忽略本文章,或去redis学习导图寻找更多答案 set set是 string 类型的无序集合 集合是通过哈希表实现的,所以添加,删除,查找的时间复杂度都是 O(1) 不能重复 set应用场景 set特性:不能重复,随机,集合操作 抽奖:随机 游戏:好友的牛逼装备(他有的,我没有的):差集 共同好友:交集 共同关注:交集 将所有好友/关注的人都放在一个集合中 语法说明 key:存储的数据名字 memb

weixin_44828005的博客 326

redis学习day02---set集合

一、set集合 1.set集合 无序的,去重的 元素是字符串类型 最多包含2^32-1元素 2.命令 (1)增加一个或多个元素 sadd key member [member ...] 如果元素已经存在,则自动忽略 例子: sadd friends peter sadd friends jack tom john sadd friends may tom (2)移除一个或者多个元素 srem key member [member ...] 元素不存在,自动

W_X_L11的博客 487

Redis学习06——存储字符串集合(set)

Redis学习06存储字符串集合set 一字符串集合set说明 二添加元素 三删除元素 四获得集合中的元素 五判断成员是否存在 六集合的差集运算 A-B B-A 七集合的交集运算 八集合的并集运算 九其他命令 1 scard key 2 srandmember key 3 sinterstore destination key1 key2 4 sunionstore destination ke

qiwenmingshiwo的专栏 1176

redis 学习笔记5 set 集合

概念: Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 1. sadd('keyname','value1','value2','value') (设置集合值,参数 keyname 可以理解为集合名, value 是 存在集合里的值) / scard('集合名') (获取集合里的成员数) $redis->sadd('key1','value1','value2','value3');//设置集合的值 $redis...

qq_40951359的博客 327

Redis学习---(10)Redis 集合(Set)

Redis 集合(Set) Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。 实例 redis 127.0.0.1:6379> SADD...

zhangbijun1230的专栏 297

草稿——redis学习有关set集合日志

#sadd set集合名 值(没有集合创建set集合,添加值) 127.0.0.1:6379[1]> sadd set ling (integer) 1 127.0.0.1:6379[1]> sadd set meng (integer) 1 127.0.0.1:6379[1]> sadd set wu (integer) 1 #smembers set集合名(查看set集合所有值) 127.0.0.1:6379[1]> smembers set 1) "meng"...

qq_57205114的博客 285
上一篇: java8 LocalDate 获取指定日期后的第N天
下一篇: java8如何判断一个操作是惰性求值还是及早求值
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值