Jedis操作五种不同的类型的数据
package cn.hope.jedis.utils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author newcityman
* @date 2019/9/20 - 0:33
* JedisPool工具类
* 加载配置文件,配置连接池的连接池
* 提供获取连接的方法
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;
static {
//读取配置文件
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建Properties对象
Properties prop = new Properties();
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据,设置到JedisPoolConfig()中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(Integer.parseInt( prop.getProperty("maxTotal")));
config.setMaxTotal(Integer.parseInt(prop.getProperty("maxIdle")));
jedisPool=new JedisPool(config,prop.getProperty("host"),Integer.parseInt(prop.getProperty("port")));
}
/**
* 获取连接方法
* @return
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
package cn.hope.jedis.test;
import cn.hope.jedis.utils.JedisPoolUtils;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Jedis测试类
* @author newcityman
* @date 2019/9/19 - 22:36
*/
public class JedisTest {
@Test
public void test1(){
//1、创建连接
Jedis jedis = new Jedis("localhost", 6379);
//2、操作
jedis.set("city","nanjing");
//3、关闭连接
jedis.close();
}
/**
* String数据结构操作
*/
@Test
public void test2(){
//1、创建连接
Jedis jedis = new Jedis();//不写参数时,默认是主机是localhost,端口是6379
//2、操作
jedis.set("city","nanjing");
String city = jedis.get("city");
System.out.println(city);
jedis.setex("activecode",20,"159637");
String activecode = jedis.get("activecode");
System.out.println(activecode);
//3、关闭连接
jedis.close();
}
/**
* Hset数据结构操作
*/
@Test
public void test3(){
//1、创建连接
Jedis jedis = new Jedis();
//2、操作
//存储hash
jedis.hset("myhash","hashid","123");
jedis.hset("myhash","hashname","pickpag");
jedis.hset("myhash","hashage","12");
//获取hash
String hget = jedis.hget("myhash", "hashname");
System.out.println(hget);
//获取hash中说有map值
Map<String, String> map = jedis.hgetAll("myhash");
Set<String> strings = map.keySet();
for (String string : strings) {
System.out.println(string+":"+map.get(string));
}
//3、关闭连接
jedis.close();
}
/**
* list数据结构操作
*/
@Test
public void test4(){
//1、创建连接
Jedis jedis = new Jedis();
//2、操作
//存储list
jedis.lpush("mylist","a" ,"b","c");
jedis.rpush("mylist","a" ,"b","c");
//获取list 范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
//list 弹出
String lpop = jedis.lpop("mylist");
String rpop = jedis.rpop("mylist");
System.out.println(lpop);
System.out.println(rpop);
//获取list 范围获取
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);
//3、关闭连接
jedis.close();
}
/**
* set数据结构操作
*/
@Test
public void test5(){
//1、创建连接
Jedis jedis = new Jedis();
//2、操作
//存储set
jedis.sadd("myset","java","c++","delphi");
//获取
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
//3、关闭连接
jedis.close();
}
/**
* sortedSet数据结构操作
*/
@Test
public void test6(){
//1、创建连接
Jedis jedis = new Jedis();
//2、操作
//存储sortedSet
jedis.zadd("mysortedSet",50,"哪吒");
jedis.zadd("mysortedSet",70,"西游记");
jedis.zadd("mysortedSet",40,"红楼梦");
//获取
Set<String> mysortedSet = jedis.zrange("mysortedSet", 0, -1);
System.out.println(mysortedSet);
//3、关闭连接
jedis.close();
}
/**
* Jedis连接池使用
*/
@Test
public void test7(){
//1、创建连接池配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
//2、创建连接池
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
//3.通过连接池获取连接
Jedis jedis = jedisPool.getResource();
//4、使用
jedis.set("hhhhh","wwwww");
//5、关闭,归还到连接池中
jedis.close();
}
/**
* 通过连接池工具类连接
*/
@Test
public void test8(){
//1、获得连接
Jedis jedis = JedisPoolUtils.getJedis();
//2、操作
jedis.set("jedispoolutils","jedispoolutils");
String jedispoolutils = jedis.get("jedispoolutils");
System.out.println(jedispoolutils);
//3、关闭
jedis.close();
}
}
Jedis操作五种不同的类型的数据的更多相关文章
- Java并发:五种线程安全类型、线程安全的实现、枚举类型
1. Java中的线程安全 Java线程安全:狭义地认为是多线程之间共享数据的访问. Java语言中各种操作共享的数据有5种类型:不可变.绝对线程安全.相对线程安全.线程兼容.线程独立 ① 不可变 不 ...
- 转:Windows Socket五种I/O模型
原文转自: Windows Socket五种I/O模型 Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模 ...
- Windows Socket五种I/O模型——代码全攻略(转)
Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操 ...
- Jedis操作笔记 redis的五种存储类型
常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 String是最简单的类型,一个key对应一个val ...
- 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!
转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...
- c# 操作Redis的五种基本类型总结
在我们的项目中,通常会把数据存储到关系型数据库中,比如Oracle,SQL Server,Mysql等,但是关系型数据库对于并发的支持并不是很强大,这样就会造成系统的性能不佳,而且存储的数据多为结构化 ...
- Redis学习笔记(3)—— 五种数据类型&keys的通用操作
一.Redis数据结构介绍 redis是一种高级的key-value的存储系统,其中的key是字符串类型,尽可能满足如下几点: 1)key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低 ...
- spring aop 的五种通知类型
本文转自:http://blog.csdn.net/cqabl/article/details/46965197 spring aop通知(advice)分成五类: 前置通知[Before advic ...
- 动态分配的顺序线性表的十五种操作—C语言实现
线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...
随机推荐
- CobaltStrike上线Linux
为获得最佳的阅读体验,请访问我的个人主页: https://xzajyjs.cn/ 在红蓝对抗中,我们常需要对目标进行长时间的控制,cobaltstrike原生对于上线windows比较轻松友好,但如 ...
- 7.深入TiDB:range 范围计算优化
本文基于 TiDB release-5.1进行分析,需要用到 Go 1.16以后的版本 我的博客地址:https://www.luozhiyun.com/archives/605 这篇文章首先会回顾一 ...
- GitHub 12个实用技巧-从projiect项目管理、代码链接到博客wiki全过程
1 在GitHub.com上编辑代码 2 粘贴图片 3 美化代码 4 在PRs中巧妙关闭issues 5 链接到评论 6 链接到代码 7 灵活使用GitHub地址栏 8 创建复选框列表 9 在GitH ...
- Django笔记&教程 2-2 URL详细匹配规则
Django 自学笔记兼学习教程第2章第2节--URL详细匹配规则 点击查看教程总目录 本章第一节中我们简单介绍了URL与View关系 简单概括来说,网页请求的url会通过urls.py里面的urlp ...
- 微信小程序(九)
小程序运行环境与基本架构 每个小程序都是运行在它所在的微信客户端上的,通过微信客户端给它提供的运行环境,小程序可以直接获取微信客户端的原生体验和原生能力. wxml视图文件和wxss样式文件都是对渲染 ...
- K8S核心概念之SVC(易混淆难理解知识点总结)
本文将结合实际工作当中遇到的一些问题和情况来解析SVC的作用以及一些比较易混淆和难理解的概念,方便日后工作用到或者遗忘时可以直接在自己曾经学习总结的博客当中直接查找到. 首先应该清楚SVC的作用是什么 ...
- 重写(Override)与重载(Overload)区别
重写是子类对父类的允许访问的方法的实现过程进行重新编写. 方法重写三要素: (1)方法名形参列表相同: (2)返回值类型和声明异常类型子类小于父类: (3)访问权限,子类大于等于父类. 重写的好处在于 ...
- 抽象类和接口的区别详解、package和import
1.抽象类和接口以及抽象类和接口的区别. 1.1.抽象类的基础语法(见昨天笔记) 1.2.接口的基础语法 1.接口是一种"引用数据类型". 2.接口是完全抽象的. 3.接口怎么定义 ...
- C/C++ Qt TreeWidget 单层树形组件应用
TreeWidget 目录树组件,该组件适用于创建和管理目录树结构,在开发中我们经常会把它当作一个升级版的ListView组件使用,因为ListView每次只能显示一列数据集,而使用TableWidg ...
- CF1175G
叉姐牛逼. \(f_{k,i} = \min_{0\leq j <i}{f_{k - 1,j} + RMQ(j + 1,i) * (i - j)}\) 我们考虑在序列上分治一波. 按照\(m\) ...