学习 Redis Hash(哈希表)

学习 Redis Hash(哈希表)

 

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
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 TestRedisHash {
	
	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();
		
		//HSET
		boolean hSet = rc.hSet("set1".getBytes(), "a".getBytes(), "b".getBytes());
		System.out.println(hSet);
		
		//HEXISTS
		boolean hExists = rc.hExists("set".getBytes(), "a".getBytes());
		System.out.println(hExists);
		
		//HGET
		byte[] hGet = rc.hGet("set".getBytes(), "a".getBytes());
		System.out.println(new String(hGet));
		
		//HGETALL
		Map<byte[], byte[]> hGetAll = rc.hGetAll("set".getBytes());
		Set<Entry<byte[], byte[]>> set = hGetAll.entrySet();
		Iterator<Entry<byte[], byte[]>> ite = set.iterator();
		while (ite.hasNext()) {
			Entry<byte[], byte[]> entry = ite.next();
			System.out.println(new String(entry.getKey()) + "  " + new String(entry.getKey()));
		}
		
		Set<byte[]> keySet = hGetAll.keySet();
		Iterator<byte[]> iter = keySet.iterator();
		while (iter.hasNext()) {
			byte[] key = iter.next();
			System.out.println(new String(key) + "  " + new String(hGetAll.get(key)));
		}
		
		//HKEYS
		Set<byte[]> hKeys = rc.hKeys("books".getBytes());
		Iterator<byte[]> itrKeys = hKeys.iterator();
		while (itrKeys.hasNext()) {
			System.out.println(new String(itrKeys.next()));
		}
		
		//HVALS
		List<byte[]> hVals = rc.hVals("books".getBytes());
		for (byte[] value : hVals) {
			System.out.println(new String(value));
		}
		
		//HDEL
		long hDel = rc.hDel("testdel".getBytes(), "a".getBytes());
		System.out.println(hDel);
		
		//HINCRBY 
		long hIncrBy = rc.hIncrBy("number".getBytes(), "b".getBytes(), 2);
		System.out.println(hIncrBy);
		
		//HINCRBYFLOAT
		double hIncrByFloat = rc.hIncrBy("dounum".getBytes(), "b".getBytes(), 2.0e2);
		System.out.println(hIncrByFloat);
		
		//HLEN
		long hLen = rc.hLen("seft".getBytes());
		System.out.println(hLen);
		
		//HMSET
		Map<byte[], byte[]> books = new HashMap<byte[], byte[]>();
		books.put("001".getBytes(), "Redis".getBytes());
		books.put("002".getBytes(), "Mongodb".getBytes());
		books.put("003".getBytes(), "Mysql".getBytes());
		rc.hMSet("books".getBytes(), books);
		
		//HMGET
		List<byte[]> hMget = rc.hMGet("books".getBytes(), "003".getBytes(), "002".getBytes(), "aa".getBytes());
		for (byte[] value : hMget) {
			if (value != null) {
				System.out.println(new String(value));
			}
		}
		
		//HSETNX
		boolean hSetNX = rc.hSetNX("setnx".getBytes(), "hello".getBytes(), "world".getBytes());
		System.out.println(hSetNX);
		
		//HSCAN
		ScanOptionsBuilder sob = ScanOptions.scanOptions().count(1).match("*1");
		ScanOptions options = sob.build();
		options.getCount();
		Cursor<Entry<byte[], byte[]>> hScan = rc.hScan("books".getBytes(), options);
		while (hScan.hasNext()) {
			Entry<byte[], byte[]> entry = hScan.next();
			System.out.println(new String(entry.getKey()) + "  " + new String(entry.getValue()));
		}
		
	}

}

 

c语言实现求一个矩阵特征值和特征向量 前言 求矩阵的特征值,主要是用的QR分解,在我的有一次博客里,我已经详细地给出了计算的过程,大家有兴趣可以去看下,经过几天的钻研,终于完成了整个的eig算法。下面我将把我的整个代码附上,有不懂的可以问我,欢迎一起讨论学习! 这是对上一次的修改版,上一次写的程序是在C++编译环境下编译的,所以放在c里面编译有些会出错。 最后,如果有不对的地方希望大... 阅读详情

相关推荐

LabVIEW与三菱PLC通讯实战:ActiveX控件在FX5U上的应用技巧

本文深入探讨了如何利用三菱MX Component中的ActiveX控件,在LabVIEW中实现与FX5U系列PLC的高效、稳定通讯。文章从环境配置、ActiveX控件生命周期管理、数据读写性能优化及容错机制等实战角度,分享了构建工业级健壮通讯程序的核心技巧与架构设计思路。

qsc9012345的博客 890

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

今日在学习Redis时,发现导入RedisTemplate和RedisCacheManager失败,反复思索,终于找到解决办法,至此记下以便日后查阅。 pom.xml引入如下: &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.data&amp;amp;lt;/groupId&amp;amp;gt; &amp;a

小影 8万+

科研党福音:如何用Zotero+Paper Agent打造你的AI论文速递系统(附详细配置教程)

本文为科研工作者提供了一套利用Zotero和开源工具Paper Agent构建自动化AI论文速递系统的详细教程。该系统能基于用户在Zotero中的文献库智能学习研究兴趣,每日自动从arXiv等平台筛选、下载并深度解读最相关的前沿论文,生成个性化日报,实现从被动接收到主动精准获取的知识工作流重塑。

kite3的博客 517

Redis在测试中应用

一、Redis简介 目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了 读写速度,是实现网站高并发不可或缺的一部分。在分布式系统和WEB开发中得到广泛的应用 其存储的是非结构化的key-value数据,支持丰富的数据结构。Redis的5种对象类型:String字符串、hash哈希、list列表、set集合、zset有序集合。丰富的类型是redis相对于memcached等一大优势。 ...

yiqin的专栏 1449

避坑指南:RK3568双网口RMII模式DTS配置常见错误与调试技巧

本文详细解析了RK3568双网口RMII模式DTS配置中的常见错误与调试技巧,涵盖时钟配置、PHY识别、复位时序等关键问题。通过实战案例和系统化调试方法,帮助开发者快速解决百兆以太网连接不稳定、PHY识别失败等典型问题,提升开发效率。

weixin_42549037的博客 345

特斯拉 Model 3解析(九)特斯拉 Model 3 自动驾驶域控制器硬件架构

硬件层:车规级高密度主板 → PI/SI优化到极致传感器层:三目摄像头主导视觉,雷达补充冗余,超声波保证近距设计理念:依靠芯片算力最大化视觉潜力,而不是堆传感器这套思路的优点是:成本可控、量产快、迭代快。缺点是:极端场景下感知鲁棒性不足。纯视觉方案短期可行,但中长期必然要重新引入高分辨率雷达甚至固态LiDAR作为冗余。电源/信号完整性会越来越关键,未来域控板设计会越来越像数据中心服务器。

weixin_43199439的博客 1787

Redis基础知识之—— hset 和hsetnx 的区别

&#13; 命令参数:HSET key field valueHSETNX key field value 作用区别:HSET 将哈希表 key 中的域 field 的值设为 value 。如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。如果域 field 已经存在于哈希表中,旧值将被覆盖。HSETNX 将哈希表 key 中的域 field 的值...

Tinywan 6338

ADS2023实战:2.4GHz超外差接收机从设计到链路预算全流程解析

本文以ADS 2023软件为平台,详细解析了2.4GHz超外差接收机从核心指标定义、架构原理到完整链路搭建与仿真的全流程。通过实战演练,重点阐述了如何利用ADS进行谐波平衡仿真和链路预算分析,以量化评估系统增益、噪声系数等关键性能,为射频工程师提供了一套从理论到仿真的系统级设计方法。

herb5的博客 820

python redis 人员信息查询_python查询redis数据

同事整理了,python查询redis集群的代码,我觉得挺好用的,比那个-c 查的准确,所以把它共享出来import redis#from rediscluster import StrictRedisClusterfrom click._compat import raw_inputfrom rediscluster import RedisCluster as StrictRedisClust...

weixin_35744067的博客 402

华三(H3C)网络设备配置命令大全与学习指南

本文全面介绍 H3C 网络设备的配置命令,涵盖路由器、交换机、ACL、NAT、VTY、SSH、本地用户、日志、STP、防火墙、QoS 等模块,适合网络工程初学者与运维人员参考。

DreamCollector的博客 6570

AD5940阻抗测量开发板实战:从源码获取到工程调试全解析

本文详细解析了AD5940阻抗测量开发板的实战应用,从源码获取到工程调试的全过程。AD5940作为ADI公司的高精度阻抗测量前端芯片,适用于生物阻抗分析、电化学传感器等领域。文章提供了开发环境搭建、工程配置、常见问题排查及进阶调试技巧,帮助开发者快速掌握AD5940开发板的使用方法。

weixin_30919429的博客 213

性能利器——Redis(一)

Redis是一种运行在内存的数据库,支持7种数据类型的存储。 Redis还提供了简单的事务机制,通过事务机制可以有效保证在高并发的场景下数据的一致性。Redis自身数据类型比较少,命令功能也比较有限,运算能力一直不强,所以Redis在2.6版本之后开始增加Lua语言的支持,这样Redis的运算能力就大大提高了,而且在Redis中Lua语言的执行是原子性的,也就是在Redis执行Lua时,不会被其他命令所打断,这样就能够保证在高并发场景下的一致性,在未来高并发的场景我们会再次看到它的威力。 Spring Bo

weixin_41847305的博客 361

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

Redis命令学习—Hash(哈希表)操作

HDEL     HDEL key field [field...]:删除Hash key中的一个或多个域, 不存在的域会被忽略。     返回值:被成功删除的key的数量。 # 测试数据redis> HGETALL abbr1) "a"2) "apple"3) "b"4) "banana"5) "c"6) "cat"7) "d"8) "dog"# 删除单个域redis> H

Mergades 4458

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【redis源码学习】看看redis的“哈希表”实现

文章目录抛砖引玉redis 中 哈希表的实现哈希函数冲突解决表结构单个节点容量变化rehash服务繁忙时的渐进式rehash!!!服务空闲时的批量rehash!!!迭代器间接迭代,防止大批量数据查询卷死自己 抛砖引玉 先手写一个哈希表吧。 三小时过去… 就这种源码中的数据结构啊,我个人是比较推崇大家自己先看概念手写一个,能不能动咱另说,在写的过程中会领悟到很多直接看所领悟不到的细节。 redis 中 哈希表的实现 哈希表主要看哪些方面?底层承载的数据结构、节点数据结构、哈希函数、冲突解决,还有啥?扩容与.

看,未来的博客 2086

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python连接Redis,学习哈希表基本操作

需要redis安装的请看网址 (https://www.runoob.com/redis/redis-install.html) python操作redis的第三方库叫“redis-py”。需要用python的pip命令来安装它,也可以在pycharm中添加需要的第三方库(https://www.cnblogs.com/thisyan/p/9671696.html) 安装完成后,打开python的交互环境测试安装结果:导入redis,如果不报错,则说明导入成功,导入成功意味着安装成功。 我们要在cmd 下载

博樽 716

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

redis源代码学习-哈希表的实现

在redis中有专门的文件定义自己的数据结构,这篇我学习的时其中的哈希列表的实现,包括insert/delete/find/replace/get-random-element等操作。dict结构的主要目的是解决Redis中的数据查找问题。它利用哈希函数确定key值的位置,并且拥有两张数据表,在数据容量不够时自动实现扩容,并对当前哈希表中的数据rehash,但这个rehash操作不是一次完成的,而

shouwangzhe987的博客 1343

redis源码学习-05_字典、哈希表

概述 字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构。 在字典中, 一个键(key)可以和一个值(value)进行关联(或者说将键映射为值), 这些关联的键和值就被称为键值对。 字典中的每个键都是独一无二的, 程序可以在字典中根据键查找与之关联的值, 或者通过键来更新值, 又或者根据键来删除整个键值对, 等等。 结构体 字典dict /* * 字典 */ typedef

飞奔的屎壳郎 287

最新【redis源码学习】看看redis的“哈希表”实现,java面试必问

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习已经将知识体系整理好(源码,笔记,PPT,学习视频)本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习已经将知识体系整理好(源码,笔记,PPT,学习视频)[外链图片转存中…(img-5KPc9S9A-1715655495861)]

2401_84689238的博客 462

c++ 哈希_Redis源码学习(4)-Redis中哈希表的实现(上)

在Redis中,哈希表不但是我们可以使用的几种基础数据结构之一,同时还是整个Redis数据存储结构的核心。 究其根本,Redis是一种基于Key-Value的内存数据库,所有的用户数据,Redis在底层都是使用哈希表进行保存的。 可以说,了解Redis中哈希表的实现方式,是了解Redis存储的一个关键。Redis哈希表概述基于链表的哈希表是实现哈希表的一个主流方式,除了Redis中的哈希表实现,g...

weixin_39534100的博客 321

linux内核中的 哈希表_Redis源码学习(6)-Redis中哈希表的实现(下)

Redis哈希表的迭代与遍历Redis中对于哈希表的迭代与遍历,是整个哈希表实现中最为巧妙,同时也是最复杂难以理解的一个部分, 相当一部分写法,很难揣测作者的意图。只能暂且根据Redis的整体功能来进行推测,当然笔者的推测无法保证完全的准确, 如果随着对代码理解的深入,笔者会随时更新对这部分内容的理解。Redis哈希表的随机采样在Redis中,给出了两个接口函数用于对哈希表进行随机采样,不过作者自...

weixin_39638014的博客 235

Redis学习分享(篇一:全局哈希表)

主要对Redis学习进行分享@TOC

zhanglifan_cd的博客 1039

Redis 学习笔记(二)——全局哈希表的数据写入

Redis全局哈希表

zllovewln的专栏 984

Redis源码分析(三)---dict哈希结构

昨天分析完adlist的Redis代码,今天马上马不停蹄的继续学习Redis代码中的哈希部分的结构学习,不过在这里他不叫什么hashMap,而是叫dict,而且是一种全新设计的一种哈希结构,他只是通过几个简单的结构体,再搭配上一些比较常见的哈希算法,就实现了类似高级语言中HashMap的作用了。也让我见识了一些哈希算法的实现,比如dbj hash的算法实现,俗称times33,算法,就是不停的*3

走在前往架构师的路上 1万+

Python操作redis系列以 哈希(Hash)命令详解(四)

# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host="123.56.74.190",port=6379,password="66666666666") 1. Hset 命令用于为哈希表中的字段赋值 。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果...

aini4568的博客 325

redis学习-散列表常用命令(hash)

redis学习-散列表常用命令(hash) hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及键值的值 HEXISTS:判断一个散列表里是否存在键值 hdel:删除一个散列表里的一个或者多个键值 hlen:获取离散表的键值...

weixin_30808253的博客 106
上一篇: 遇到的各种问题
下一篇: HashMap和Hashtable的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值