package com.advance.Redis;

import org.apache.log4j.Logger;
import org.testng.annotations.Test;
import redis.clients.jedis.Jedis; import java.util.*; /**
* @Author: 谷天乐
* @Date: 2019/2/25 17:17
* @Gratitude: wudalang_gd
* @Description: 根据原生Jedis封装常用工具
*/
public class RedisUtil{
private static Logger logger = Logger.getLogger(RedisUtil.class);
private static final String ip = "localhost";
private static final Integer port = 6379;
//获取连接
public Jedis connection() throws Exception{
Jedis jedis = new Jedis(ip,port);
return jedis;
} //为string添加元素
public void set(String key, String value) throws Exception {
Jedis jedis = connection();
jedis.set(key,value); } //获取string
public String get(String key) throws Exception {
Jedis jedis = connection();
return jedis.get(key);
} //追加string
public void append(String key, String value) throws Exception {
Jedis jedis = connection();
jedis.append(key,value);
} //添加set
public void sadd(String key, Set<String> value) throws Exception {
Jedis jedis = connection();
for(String str: value){
jedis.sadd(key, str);
}
} //set删除指定元素
public void srem(String key, Set<String> value) throws Exception {
Jedis jedis = connection();
Iterator<String> it = value.iterator();
while(it.hasNext()){
String str = it.next();
jedis.srem(key, str);
}
} //获取key对应的value总数
public Long scard(String key) throws Exception {
Jedis jedis = connection();
return jedis.scard(key);
} //获取key对应的所有value
public Set<String> smembers(String key) throws Exception {
Jedis jedis = connection();
return jedis.smembers(key);
} //判断set是否存在
public boolean sismember(String key, String value) throws Exception {
Jedis jedis = connection();
return jedis.sismember(key,value);
} //随机获取数据
public String srandmember(String key) throws Exception {
Jedis jedis = connection();
return jedis.srandmember(key);
} //向list添加元素
public void lpush(String key, List<String> list) throws Exception {
Jedis jedis = connection();
for(String s: list){
jedis.lpush(key,s);
}
} //获取list
public List<String> lrange(String key, Integer start, Integer end)
throws Exception {
Jedis jedis = connection();
return jedis.lrange(key, start, end);
} //删除任意类型的key
public void del(String key) throws Exception {
Jedis jedis = connection();
jedis.del(key);
} //设置map
public void hmset(String key, Map<String, String> map) throws Exception {
Jedis jedis = connection();
jedis.hmset(key,map);
} //获取map的key的个数
public Long hlen(String key) throws Exception {
Jedis jedis = connection();
return jedis.hlen(key);
} //获取map中所有key
public Set<String> hkeys(String key) throws Exception {
Jedis jedis = connection();
return jedis.hkeys(key);
} //获取map中所有value
public List<String> hvals(String key) throws Exception {
Jedis jedis = connection();
return jedis.hvals(key);
} //获取map中的指定key的value
public List<String> hmget(String key, String... params)
throws Exception {
Jedis jedis = connection();
if (null == params || params.length == 0) {
throw new RuntimeException(this.getClass().getSimpleName()+ "::"
+ new Exception().getStackTrace()[0].getMethodName()+"参数不能为空");
}
return jedis.hmget(key,params);
} //获取map所有的key和value
public Map<String, String> hgetAll(String key)
throws Exception {
Jedis jedis = connection();
return jedis.hgetAll(key);
} //删除指定key的map
public void hdel(String key, String... params) throws Exception {
Jedis jedis = connection();
if (null == params || params.length == 0) {
throw new RuntimeException(this.getClass().getSimpleName()+ "::"
+ new Exception().getStackTrace()[0].getMethodName()+"参数不能为空");
}
jedis.hdel(key,params);
} //测试string
@Test
public void testString() throws Exception{
RedisUtil r = new RedisUtil();
r.set("z", "wb");
String s = r.get("z");
logger.debug(s);
} //测试set
@Test
public void testList() throws Exception{
RedisUtil r = new RedisUtil();
List<String> list = new ArrayList<>();
list.add("w");
list.add("b");
r.lpush("list",list);
List<String> t = r.lrange("list",0,-1);
logger.debug(t);
} //测试set
@Test
public void testSet() throws Exception{
RedisUtil r = new RedisUtil();
Set<String> set = new HashSet<String>();
set.add("w");
set.add("b");
r.sadd("set",set);
Set<String> t = r.smembers("set");
logger.debug(t);
} //测试map
@Test
public void mapTest() throws Exception {
RedisUtil r = new RedisUtil();
Map <String,String> map = new HashMap<>();
map.put("Red Alert 3","Long live Soviet");
map.put("Starcraft","No one can undie");
map.put("PUBG","Keep breath");
r.hmset("Game",map);
r.hdel("Game","Starcraft");
Map <String,String> m = r.hgetAll("Game");
logger.debug(m);
}
}

Java封装Redis常用操作的更多相关文章

  1. 【Redis使用系列】Redis常用操作

    一.string类型的常用命令 set key value   #一个key对应一个value.多次赋值,会覆盖前面. setnx key value  #如果key存在则创建key1,并返回1,如果 ...

  2. Python Redis常用操作(持续更新)

    目录 1.Redis简介 2.Redis部署 3.Redis API应用 4.String操作 1.Redis简介 redis是业界主流的key-value,nosql数据库之一.和Memcached ...

  3. java封装 redis 操作 对象,list集合 ,json串

    /** * 功能说明: * 功能作者: * 创建日期: * 版权归属:每特教育|蚂蚁课堂所有 www.itmayiedu.com */package com.redis.service; import ...

  4. java中的redis常用操作

    https://blog.csdn.net/lixiaoxiong55/article/details/81592800    超详细版 常规操作 public class TestReidsComm ...

  5. redis常用操作总结

    在项目中时常会用到redis,redis看起来好像很难的样子,而且我也确认反复学习了很久,但是,总结下来,自己使用到的东西并不太多,如下作一些总结工作. 1.安装(单机) 1.1 windows, 直 ...

  6. Redis常用操作

    一.string类型的常用命令 set key1 com #一个key对应一个value,多次复制,会覆盖前面的value setnx key1 zhangsan #如果key1不存在则创建key1, ...

  7. Redis常用操作大全和Python操作Redis

    简单使用 utils.py import redis POOL=redis.ConnectionPool(host='127.0.0.1',port=6379) view.py 第一种方式 (通用方式 ...

  8. python openpyxl 封装Execl常用操作的方法

    封装Excel操作方法:先装openpyxl:pip install openpyxl==2.4.5(可以指定版本) 封装脚本:#encoding=utf-8 from openpyxl import ...

  9. Redis 常用操作

    import org.junit.Before;import org.junit.Test;import redis.clients.jedis.Jedis;import java.util.Set; ...

随机推荐

  1. memcached分布式缓存系统

    在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活.此时 ...

  2. python 实现九型人格测试小程序

    用python实现九型人格测试,并把测试结果绘制成饼图,实现代码如下: # @Description: 九型人格 import xlrd, matplotlib.pyplot as plt data ...

  3. 微信公众号发送客服消息提示errcode":45015,"errmsg":"response out of time limit or subscription is canceled hint:解决办法【已解决】

    微信公众号发送客服消息提示errcode":45015,"errmsg":"response out of time limit or subscription ...

  4. Webapi上传数据(XML)敏感字符解决方案

    方法名加特性 [ValidateInput(false)] 配置文件加 <httpRuntime requestValidationMode="2.0" targetFram ...

  5. S11 day 96 RestFramework 之认证权限

    一.设计一个简易的登录 1. 建立一个模型 class UserInfo(models.Model): username =models.CharField(max_length=) password ...

  6. Python 第三方包上传至 PyPI 服务器

    PyPI 服务器主要功能是?PyPI 服务器怎么搭建? PyPI 服务器可以用来管理自己开发的 Python 第三包. Pypi服务器搭建 Python 第三方包在本地打包 # 本地目录执行以下命令应 ...

  7. 【文文殿下】CF1098C Construct a tree 题解

    题解 挺水的一道题. Rating $ \color{orange} {2300}$ 以下送命题. 首先我们知道,所有子树大小之和就是节点个数加上从根到所有节点的路径长度之和. 他要求度数尽可能小,所 ...

  8. 正则表达式学习之grep,sed和awk

    正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割.匹配.查找以及替换操作. 描述一个正则表达式需要字符类.数量限定符.位置限定符.规定一些特殊语法表示字符类,数量限定符和位 ...

  9. AFNetworking 报3840

    工作中遇到前后台交互,前端解析不了后端返回的数据格式 ,原因在于没有标准统一的请求格式 这是个坑,但是还是有办法修复 错误提示: Error Domain=NSCocoaErrorDomain Cod ...

  10. WPF一步步开发XMPP IM客户端1:入门

    [起因&目标] 因为工作原因接触openfire服务端和spark客户端开发,主要是基于openfire扩展开发了针对企业用途的服务器插件,还开发了各个平台上的客户端(Windows\mac\ ...