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操作五种不同的类型的数据的更多相关文章

  1. Java并发:五种线程安全类型、线程安全的实现、枚举类型

    1. Java中的线程安全 Java线程安全:狭义地认为是多线程之间共享数据的访问. Java语言中各种操作共享的数据有5种类型:不可变.绝对线程安全.相对线程安全.线程兼容.线程独立 ① 不可变 不 ...

  2. 转:Windows Socket五种I/O模型

    原文转自:  Windows Socket五种I/O模型 Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模 ...

  3. Windows Socket五种I/O模型——代码全攻略(转)

    Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操 ...

  4. Jedis操作笔记 redis的五种存储类型

    常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 String是最简单的类型,一个key对应一个val ...

  5. 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!

    转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...

  6. c# 操作Redis的五种基本类型总结

    在我们的项目中,通常会把数据存储到关系型数据库中,比如Oracle,SQL Server,Mysql等,但是关系型数据库对于并发的支持并不是很强大,这样就会造成系统的性能不佳,而且存储的数据多为结构化 ...

  7. Redis学习笔记(3)—— 五种数据类型&keys的通用操作

    一.Redis数据结构介绍 redis是一种高级的key-value的存储系统,其中的key是字符串类型,尽可能满足如下几点: 1)key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低 ...

  8. spring aop 的五种通知类型

    本文转自:http://blog.csdn.net/cqabl/article/details/46965197 spring aop通知(advice)分成五类: 前置通知[Before advic ...

  9. 动态分配的顺序线性表的十五种操作—C语言实现

    线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...

随机推荐

  1. vscode输出窗口中文乱码

    解决方法:开始->设置->时间和语言->其他日期.时间和区域设置->区域.更改位置->管理.更改系统区域设置->勾选->重启 完美解决!来源:https:// ...

  2. @PostConstruct和static静态块初始化的区别

    static blocks are invoked when the class is being initialized, after it is loaded. The dependencies ...

  3. Kafka面试题总结

    1.Kafka 都有哪些特点? 高吞吐量.低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partit ...

  4. Flume面试题整理

    1.Flume使用场景(☆☆☆☆☆) 线上数据一般主要是落地(存储到磁盘)或者通过socket传输给另外一个系统,这种情况下,你很难推动线上应用或服务去修改接口,实现直接向kafka里写数据,这时候你 ...

  5. 问题 D: 某种序列

    题目描述 数列A满足An = An-1 + An-2 + An-3, n >= 3  编写程序,给定A0, A1 和 A2, 计算A99 输入 输入包含多行数据  每行数据包含3个整数A0, A ...

  6. 【Linux】解压分卷压缩的zip文件

    例如linux.zip.001, linux.zip.002, linux.zip.003. 1. cat linux.zip* > linux.zip #合并为一个zip包. 2. unzip ...

  7. python实现高斯图像金字塔

    一,定义 图像金字塔:同一图像的不同分辨率的子图集合,其生成方式有向上取样和向下取样.向下取样是从G0采样形成分辨率较低的G1,G1再采样形成分辨率较低的G2......,就构成了一个金字塔.向下取样 ...

  8. [bzoj1071]组队

    题目即要求$Ah+Bv<=C+Aminh+Bminv$,如果同时枚举minh和minv,那么即要求$minh\le h$,$minv\le v$且$s\le C+Aminh+Bminv$从小到大 ...

  9. .NET Core基础篇之:依赖注入DependencyInjection

    依赖注入已经不是什么新鲜话题了,在.NET Framework时期就已经出现了各种依赖注入框架,比如:autofac.unity等.只是在.net core微软将它搬上了台面,不用再依赖第三方组件(那 ...

  10. C/C++内存几大分区和存储空间的布局

    先看一下可执行文件加载进内存后形成的进程在内存中的结构,如下图: 代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的. 数据区:存放已初始化的全局变量.静态变量(全局和局部).常量数据. ...