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. 如何系统学习C 语言(中)之 结构体篇

    1,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ...

  2. 如何实现异步 connect

    写过网络程序的同学,应该都知道 connect 函数,在 socket 开始读写操作之前,先要进行连接,也即 TCP 的三次握手 , 这个过程就是在 connect 函数中完成的, connect 函 ...

  3. vue3 学习笔记 (二)——axios 的使用有变化吗?

    本篇文章主要目的就是想告诉我身边,正在学 vue3 或者 准备学 vue3 的同学,vue3中网络请求axios该如何使用,防止接触了一点点 vue3 的同学会有个疑问?生命周期.router .vu ...

  4. 体验用yarp连接websocket

    前段时间一看yarp的仓库,wow,终于发布1.0版本了..net也升级到6版本了,之前一直只是用yarp做HTTP转发,今天刚好试试websocket 话不多说,直接开搞 配置集群 首先先配置集群信 ...

  5. 微信小程序(三)开发框架

    基本构成: 数据绑定: 例: <!--index.hxml--> <view> <text data-name="{{theName}}">&l ...

  6. @Inject注解

    在看eureka的源码看到了这个注解,百度一下说这个和autowored差不多, import javax.inject.Inject;import javax.inject.Singleton; @ ...

  7. nginx安装与配置3-反向代理两台

    1.nginx 反向代理 两台tomcat 2.8080.8081 启动tomcat 记住每个tomcat都有两个端口不要出现tomcat端口占用情况 3.启动项目访问,不报错可以访问 4.在每个to ...

  8. 从零开始学Kotlin第一课

    Kotlin的方法: 一个简单的计算器: fun main(args:Array<String>){ //主函数main方法 var a=8; var b=9; println(plus( ...

  9. bilibili动画下载视频批量改名(python)

    bilib应用 在微软商店中下载哔哩哔哩动画,虽然软件UI古老,但是贵在稳定和支持下载 安装以后搜索自己想要的视频,然后缓存下载 下载后进入下载的路径 视频文件重命名 打开自动命令的程序或者py脚本, ...

  10. Atcoder Grand Contest 001 D - Arrays and Palindrome(构造)

    Atcoder 题面传送门 洛谷题面传送门 又是道思维题,又是道把我搞自闭的题. 首先考虑对于固定的 \(a_1,a_2,\dots,a_n;b_1,b_2,\dots,b_m\) 怎样判定是否合法, ...