Java对redis的五种values的操作API_七妹要奈斯的博客-程序员秘密

技术标签: 数据库存储过程  

五种value类型:String,List,Hash,Set,ZSet(有序集)

package com.realrainy.oa;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;

public class RedisTest {
    

	Jedis je = new Jedis("127.0.0.1", 6379);
//	je.auth("password");

	public static void main(String[] args) {
    
		RedisTest rt = new RedisTest();
//		rt.rSting();
//		rt.rHash();
//		rt.rList();
//		rt.rSet();
		rt.rSSet();

	}

	public void rSting() {
    
		// 赋值
		je.set("name", "huangqiqi");
		je.set("username", "huangqiqi");
		je.set("password", "123");
		// 删除
		je.del("name");
		System.out.println(je.get("name"));
		System.out.println(je.get("username"));
		// 自减
		je.decr("password");
		System.out.println(je.get("password"));
		// 增减指定量
		je.incrBy("password", 3);
		System.out.println(je.get("password"));
		// 连接
		je.append("username", "如果没有串,我就自己创建!");
		System.out.println(je.get("username"));
	}

	public void rHash() {
    
		// 单个赋值
		je.hset("用户表1", "username", "huangqiqi");
		System.out.println(je.hget("用户表1", "username"));
		// 多个赋值
		Map<String, String> map = new HashMap<>();
		map.put("username", "huangqiqi");
		map.put("password", "123");
		je.hmset("用户表2", map);
		System.out.println(je.hmget("用户表2", "username", "password"));
		// 增加数字
		je.hset("用户表1", "age", "23");
		je.hincrBy("用户表1", "age", 2);
		System.out.println(je.hget("用户表1", "age"));
		// 判断字段是否存在
		boolean fiag1 = je.hexists("用户表1", "username");
		boolean fiag2 = je.hexists("用户表1", "password");
		System.out.println(fiag1 + "\t" + fiag2);
		// 获取长度
		System.out.println(je.hlen("用户表1"));
		// 获取所有属性名称
		Set<String> sets = je.hkeys("用户表2");
		for (String str : sets) {
    
			System.out.println(str);
		}
		// 获取所有属性的值
		List<String> list = je.hvals("用户表1");
		for (String str : list) {
    
			System.out.println(str);
		}
	}

	public void rList() {
    
		// 从左边开始添加
		je.lpush("list1", "1", "2", "3");
		je.lpush("list1", "a", "b", "c");
		// 从第1个开始(坐标为0)到倒数第一个(坐标为-1) 也就是最后一个 也就是 所有数据
		System.out.println("list1:" + je.lrange("list1", 0, -1));

		// 从右边开始开始添加,一般人都习惯这种思维
		je.rpush("list2", "1", "2", "3");
		je.rpush("list2", "a", "b", "c");
		System.out.println("list2:" + je.lrange("list2", 0, -1));

		// 从左侧弹出集合元素,并删除该元素
		System.out.println(je.lpop("list1"));
		// 从右侧弹出集合元素,并删除该元素
		System.out.println(je.rpop("list2"));

		// 删除
		je.del("list1");
		je.del("list2");
	}

	public void rSet() {
    
		// 添加和获取
		je.sadd("set1", "a", "b", "c");
		je.sadd("set1", "a", "d", "e");
		System.out.println("不会出现重复元素:" + je.smembers("set1"));

		// 删除元素
		je.srem("set1", "d", "e");
		System.out.println("删除掉两个元素后:" + je.smembers("set1"));

		// 判断某个元素是否存在
		boolean flag = je.sismember("set1", "a");
		System.out.println(flag);

		/*
		 * 计算差、交、并集
		 */
		je.sadd("set2", "a", "b", "c");
		je.sadd("set3", "b", "c", "d");
		System.out.println("set2:" + je.smembers("set2"));
		System.out.println("set3:" + je.smembers("set3"));

		// 差集: je.sdiff("set2","set3") 结果返回set2有但是set3没有的元素
		Set<String> set1 = je.sdiff("set2", "set3");
		System.out.println("差集:");
		for (String set : set1) {
    
			System.out.print(set + "\t");
		}

		// 交集
		Set<String> set2 = je.sinter("set2", "set3");
		System.out.println("\n交集:");
		for (String set : set2) {
    
			System.out.print(set + "\t");
		}

		// 并集
		Set<String> sets3 = je.sunion("set2", "set3");
		System.out.println("\n并集");
		for (String set : sets3) {
    
			System.out.print(set + "\t");
		}

		// 计算元素总数
		System.out.println("\nset1的元素总数:" + je.scard("set1"));

		// 随机获取一个元素
		String rand = je.srandmember("set1");
		System.out.println("随机获取一个元素:" + rand);
	}

	public void rSSet() {
    
		// 添加集合期末成绩 元素是平时分,考试,作业 评分分别是80,10,10
		je.zadd("期末成绩", 80, "平时分");
		je.zadd("期末成绩", 10, "考试");
		je.zadd("期末成绩", 10, "作业");

		// 获得元素
		Set<Tuple> sets = je.zrangeWithScores("期末成绩", 0, -1);
		for (Tuple t : sets) {
    
			System.out.println(t.getElement() + "\t" + t.getScore());
		}
		
		System.out.println("删除得分在70~90分的元素");
		// 删除元素
		je.zremrangeByScore("期末成绩", 70, 90);

		Set<Tuple> sets2 = je.zrangeWithScores("期末成绩", 0, -1);
		for (Tuple t : sets2) {
    
			System.out.println(t.getElement() + "\t" + t.getScore());
		}
	}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42570601/article/details/99649214

智能推荐

Java反射获取类的所有字段名称_反射获取所有的字段名_沙漠662的博客-程序员秘密

@Test public void test2() { List&lt;String&gt; childerField = getChilderField(PotentialSurveyRuleDTO.class); System.out.println(childerField.size()); for (String s : childerField) { System.out.println(s); }..

【综合案例】网络贷款违约预测_贷款违约预测模型_貮叁的博客-程序员秘密

随着互联网应用的日益普及,网络贷款已成为一种常见的贷款形式。但是,网络借贷行业也存在着很多的风险失控问题。为了规范网络借贷过程管理,加强网络借贷风险控制,业界人士开始采用一些技术手段来规避网络借贷风险。许多金融服务机构在前期的业务运营中积累了大量的客户数据,如个人基本信息、在机构办理业务信息等数据。本文正是基于**数据挖掘技术**,综合客户各项信息数据及以往业务中是否违约为分类标签,**进行模型训练**,经过调整优化后对新的申请用户信息**进行分类预测**,以预测结果作为核发贷款的重要依据。

vue项目之axios请求统一配置了超时时间,单独接口请求时重设超时时间_vue超时时间_牛先森家的牛奶的博客-程序员秘密

vue项目中axios请求统一配置了超时时间,单独接口请求时重设超时时间根据官网推荐:axios配置官网默认请求时间接口请求:// 任务新建export function newTaskAdd(data) { return request({ url: '/api/taskPlan/add', method: 'post', data })}重设超时时间的接口请求:// 任务新建export function newTaskAdd(data) {

中国交通银行总行软件开发中心拿offer流程_交通银行总行软件开发中心校招真难进?_sty945的博客-程序员秘密

交通银行笔试线上笔试,相对比较简单,但是考的内容确实多,java知识很多面试技术很少,面试官很少,闲聊几句,问一问是否愿意加班的情况,问一下在校学习情况,还有其他的一些体检自费,入职报销,好贵啊发offer以上就是简要流程,具体情况以及其它包括一些薪水待遇的不太适合在这里写,感兴趣的同学可以看这里...

syslog 系统日志应用_mindlesslcc的博客-程序员秘密

syslog 系统日志应用 1) 概述      syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。      几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送

json转为tfrecord格式文件怎么转_doc怎么转换成pdf?doc在线转换pdf的教程详解_weixin_39945789的博客-程序员秘密

在平时办公中,大家要用到word文档(doc、docx格式)来处理、完成很多工作事务,例如整理会议纪要。而pdf与word相比,在安全性、传阅速度方面更具优势,所以大家会经常把word转pdf后再发出去。想要把doc或者docx格式的word文档转换成为pdf文件,小伙伴们少不了专业工具的帮助。平时,我经常使用迅捷PDF转换器来转doc为pdf,操作起来很方便。这款软件有app、pc以及web这3...

随便推点

nginx开机自动重启 windows_nginx自动重启_逍遥教主的博客-程序员秘密

nginx开机自动重启资源连接nginx下载win1.首先你需要启动一个nginx服务解压下载好的nginx文件,如图所示,代表nginx启动成功这样启动你会发现当你重启电脑之后依赖需要重复的操作否则nginx不会自动启动2. 将nginx添加到系统服务使其可以开机自动启动需要借助的小工具Windows Service Wrapper WinSW是一个可执行的二进制文件,它可...

Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序_洌冰的博客-程序员秘密

mock Context我们写单元测试时,经常会用到context对象,但是直接使用context经常报空指针异常正确的mock方式如下1.添加变量@Mockprivate Context mockApplicationContext;2.在setUp方法中初始化@Beforepublic void setUp() throws Exception { MockitoAn...

JVM-调优工具详解及调优实战_null_zhouximin的博客-程序员秘密

JVM-调优工具详解及调优实战调优工具jpsjmapjstackjinfojstatJVM运行情况预估实战:解决Full GC卡顿的思路调优工具jps查看正在运行java的进程jmapjmap -histo 30340 #查看历史生成的实例jmap -histo:live 30340 #查看当前存活的实例,执行过程中可能会触发一次full gcnum:序号instances:实例数量bytes:占用空间大小class name:类名称,[C is a char[],[S i

java发送短信验证码_zuoliangzhu的博客-程序员秘密

最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。我们使用的是榛子云短信平台, 官网地址:http://smsow.zhenzikj.com我是java开发者,后端使用了springMvc,前端用的是jsp + jquery完整demo下载:https://download.csdn.net/download...

InitializingBean详解与用法_凌兮~的博客-程序员秘密

ApplicationContextAware用法当一个类实现了这个接口之后,这个类就可以方便的获得ApplicationContext对象(spring上下文),Spring发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContext(参数)方法,调用该方法时,会将容器本身ApplicationContext对象作为参数传递给该方法。package com.lyj.demo.utils;

学习Qt之属性系统详解_qt属性无关方法也能控制属性_贝勒里恩的博客-程序员秘密

文章目录一、属性系统有什么用?二、属性详解三、属性定义四、属性使用五、类的附加信息一、属性系统有什么用?一般我们说一个类有什么属性,指的就是这个类有啥成员变量。比如People类中有个int age的私有成员变量,我们就可以说这个People类有个“年龄”属性可以更改读取。Qt提供的属性系统,作用就是把类的信息暴露出来成为通用的、大家都认识的信息。比如用C++语言写的People类中中有个int age变量,但所如果用QML语言去读取就会出问题,因为QML有自己的规则,它不认识C++规则。用Qt的属

推荐文章

热门文章

相关标签