Redis 是一个开源的基于内存的数据结构存储,Redis 是远程字典服务(Remote Dictionary Server )的简写 ,它通常被用作数据库,缓存,消息代理和流引擎。Redis提供的数据结构有string,hashes,lists,sets,sorted sets五种,Redis内置了复制,Lua脚本,LRU驱动事件,事务以及不同级别的磁盘持久方法。并提供了高可用的Redis 哨兵和Redis集群方案


1. Jedis是什么


Jedis 是 Redis 官方首选的 Java 客户端开发包, Jedis客户端同时支持单机模式、分片模式、集群模式的访问模式,通过构建Jedis类对象实现单机模式下的数据访问,通过构建ShardedJedis类对象实现分片模式的数据访问,通过构建JedisCluster类对象实现集群模式下的数据访问。


2. Jedis工作模式


Jedis主要有四大模块, Jedis,JedisCluster,JedisSentinel和ShardedJedis对应了Redis的四种工作模式

序号 模块 Redis模式
1 Jedis Redis Standalone(单节点模式)
2 JedisCluster Redis Cluster(集群模式)
3 JedisSentinel Redis Sentinel(哨兵模式)
4 ShardedJedis Redis Sharding(分片模式)

3. Jedis用例


依赖第三方包
jedis-2.7.2.jar 、commons-pool2-2.3.jar

JedisPoolManager用户管理数据库连接,比如获取或者释放

package com.redis.jedis.project.common;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisPoolManager {//private static String REDISDB_IP = "192.168.62.44";private static String REDISDB_IP = "127.0.0.1";private static int REDISDB_PORT = 6379;private JedisPool jedisPool;public JedisPoolManager() {JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(20);config.setMaxIdle(5);config.setMaxWaitMillis(1000l);config.setTestOnBorrow(false);jedisPool = new JedisPool(config, REDISDB_IP, REDISDB_PORT);}public Jedis getJedis() throws Exception {try {Jedis jedis = jedisPool.getResource();return jedis;} catch (Exception e) {throw e;}}public void releaseJedis(Jedis jedis) {if (jedis != null) {jedis.close();}}
}

JedisManager 用户Redis数据库操作,当前只写了增删改查等常用行为

package com.redis.jedis.project.common;import java.util.Map;import redis.clients.jedis.Jedis;public class JedisManager {private JedisPoolManager pool = new JedisPoolManager();protected void set(int dbIndex, String key, String value, int cashSeconds)throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);jedis.set(key, value);if (cashSeconds > 0) {jedis.expire(key, cashSeconds);}} catch (Exception e) {throw e;} finally {pool.releaseJedis(jedis);}}protected String get(int dbIndex, String key) throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);return jedis.get(key);} catch (Exception e) {throw e;} finally {pool.releaseJedis(jedis);}}protected void delete(int dbIndex, String key) throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);jedis.del(key);} catch (Exception e) {throw e;} finally {pool.releaseJedis(jedis);}}protected Map<String, String> hgetAll(int dbIndex, String key)throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);return jedis.hgetAll(key);} catch (Exception e) {System.out.println(e);throw e;} finally {pool.releaseJedis(jedis);}}protected void hset(int dbIndex, String key, String field, String value)throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);jedis.hset(key, field, value);} catch (Exception e) {throw e;} finally {pool.releaseJedis(jedis);}}protected void hmset(int dbIndex, String key, Map<String, String> maps,int cacheSeconds) throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);jedis.hmset(key, maps);if (cacheSeconds >= 0) {jedis.expire(key, cacheSeconds);}} catch (Exception e) {throw e;} finally {pool.releaseJedis(jedis);}}protected void del(int dbIndex, String key) throws Exception {Jedis jedis = null;try {jedis = pool.getJedis();jedis.select(dbIndex);jedis.del(key);} catch (Exception e) {throw e;} finally {pool.releaseJedis(jedis);}}}

服务接口,实现具体业务,假设是登陆操作

package com.redis.jedis.project.common;public interface ILoginCash {public boolean longin(LoginDTO loginDTO,int cashSeconds) throws Exception;public LoginDTO getLogInfo(int userId) throws Exception;public boolean longout(int userId) throws Exception;}
package com.redis.jedis.project.common;import java.io.Serializable;public class LoginDTO implements Serializable {private static final long serialVersionUID = 1L;private int userId;private String code;private String name;private String ip;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}}

实现服务接口时,同时继承JedisManager管理类,这样可以使用JedisManager封装的操作数据库的行为,为了更好的方便管理KEY名称,一般Rredis中的KEY 都是由 对象:ID 或者对象:ID:类型 等结构管理的

package com.redis.jedis.project.common;import java.util.HashMap;
import java.util.Map;public class LoginCashManager extends JedisManager implements ILoginCash {private static final String REDIS_USER = "user";@Overridepublic boolean longin(LoginDTO loginDTO, int cashSeconds) throws Exception {boolean result = false;String key = REDIS_USER + ":" + loginDTO.getUserId();try {Map<String, String> map = new HashMap<String, String>();map.put("code", loginDTO.getCode());map.put("name", loginDTO.getName());map.put("ip", loginDTO.getIp());hmset(RedisDBConstants.USER_DB_INDEX, key, map, cashSeconds);result = true;} catch (Exception e) {System.out.println(e);}return result;}@Overridepublic LoginDTO getLogInfo(int userId) throws Exception {if (userId <= 0) {return null;}String key = REDIS_USER + ":" + userId;LoginDTO loginDTO = null;try {Map<String, String> map = hgetAll(RedisDBConstants.USER_DB_INDEX,key);if (map != null && !map.isEmpty()) {loginDTO = new LoginDTO();loginDTO.setUserId(userId);loginDTO.setCode(map.get("code"));loginDTO.setName(map.get("name"));loginDTO.setIp(map.get("ip"));}} catch (Exception e) {System.out.println(e);}return loginDTO;}@Overridepublic boolean longout(int userId) throws Exception {if (userId <= 0) {return false;}String tokenKey = REDIS_USER + ":" + userId;boolean result = false;try {del(RedisDBConstants.USER_DB_INDEX, tokenKey);result = true;} catch (Exception e) {System.out.println(e);}return result;}}

Redis默认有16个库,分别由数字 0到15编号,为方便管理,可以通过名称定义的方式以便查找

package com.redis.jedis.project.common;public class RedisDBConstants {public static int SYS_DB_INDEX = 0;public static int USER_DB_INDEX = 1;
}

测试类

package com.redis.jedis.project.common;public class MainTestRedis {public static void main(String[] args) throws Exception {LoginCashManager logincash = new LoginCashManager();System.out.println("==SAVE NOW==");LoginDTO loginDTO = new LoginDTO();loginDTO.setUserId(1000);loginDTO.setCode("1003");loginDTO.setName("LIUY");loginDTO.setIp("127.0.0.1");logincash.longin(loginDTO,50);System.out.println("==SAVE END==");LoginDTO login =logincash.getLogInfo(1000);System.out.println("==GET INFO==");System.out.println("id="+login.getUserId());System.out.println("code="+login.getCode());System.out.println("name="+login.getName());System.out.println("loginIP="+login.getIp());}
}

打印测试结果

==SAVE NOW==
==SAVE END==
==GET INFO==
id=1000
code=1003
name=LIUY
loginIP=127.0.0.1

Jedis 使用入门相关推荐

  1. redis入门——集群篇

    redis入门--集群篇 @(Redis)[服务器, 集群, 主从复制, jedis] redis入门集群篇 主从复制 基本介绍 主从配置 主redis配置 从redis配置 Redis集群 基本介绍 ...

  2. Redis的Java客户端之Jedis(Jedis)

    文章目录 Redis的Java客户端(Jedis) 一.简介 二.Jedis快速入门 1.引入依赖 2.建立连接 3.使用Jedis 4.释放资源 三.Jedis连接池 1.创建Jedis连接池配置 ...

  3. 慕课网_《Redis入门》学习总结

    https://segmentfault.com/a/1190000009530905 时间:2017年05月21日星期日 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc. ...

  4. Redis入门到实战(一、基础篇)【黑马程序员】

    第一章 Redis入门 Redis的常见命令和客户端使用 一.初识Redis 1. 认识NoSQL NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据 ...

  5. JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx

    JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx 1. MVC ...

  6. Redis的Java客户端

    目录 1 前言 2 Jedis客户端 2.1 jedis快速入门 2.2Jedis连接池 3 SpringDataRedis 3.1快速入门 3.2ReisTemplate配置序列化工具 3.3 St ...

  7. 程序员欣宸的文章分类汇总

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于代码仓库 代码仓库里是博客中涉及的源码和文件,地址 ...

  8. Redis笔记-基础篇(黑马视频教程)

    写在开头 这是我在观看黑马Redis视频教程中根据PPT和上课内容,个人写的笔记,中间有部分来源于百度,如有侵权,联系我删除. 文章目录 写在开头 NoSQL数据库简介 技术发展 NoSQL数据库 R ...

  9. Jedis--操作String,hash,list,setshortedset

    黑马程序 Jedis–快速入门 @Testpublic void test1(){Jedis jedis = new Jedis("127.0.0.1",6379);jedis.s ...

最新文章

  1. 进行直播间搭建时需要注意的小细节
  2. c语言小数点进制转换,新手求教,关于含小数的二进制转换成十进制
  3. Guava关于JAVA中系统组件之间交互通讯(非线程之间通讯)
  4. 怎么把路由的#号去掉_VLAN应用篇系列:交换机VLAN间路由与传统单臂路由(子接口)方式...
  5. Juniper大中国区于肇烈
  6. css权威指南第四版_16个非常有用的CSS伪选择器,你千万不要错过了!
  7. 力扣438.找到字符串中所有字母异位词(JavaScript)
  8. 用PWA构建一个完全离线的网站
  9. 动态组合sql语句详解
  10. Asp.net网站使用HttpHandler实现图片防盗链功能
  11. combo 边写边选的注意事项
  12. 药物临床试验数据递交FDA的规定
  13. 深入了解 Squid 代理服务器及应用
  14. 5.图像,音视频标签
  15. 桂林理工研究生院计算机软件工程,2019桂林理工大学硕士研究生复试细则之软件工程...
  16. SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)
  17. 创作者基金 11 月亮点
  18. 小技巧 - 禁止复制的网站如何破解复制功能(知乎,360图书馆)?
  19. 领导力:“不懂带团队你就自己累”
  20. Pangolin could not be found because dependency Eigen3 could not be found.

热门文章

  1. 世界上最全的解酒方法
  2. 文件重命名,文件名快速修改重命名
  3. kepserver 作为opc server 连接西门子PLC 配置
  4. 技术沙龙出海日本:分享京东区块链实践与创新
  5. 什么是拖延症 ----- 时间管理:终结拖延症小技巧之高效利用时间
  6. JQGrid各种参数详解
  7. 一款比XMIND更好用的思维导图
  8. vue3中播放视频和m3u8后缀的视频解决办法
  9. 【NHOI2018】跳伞登山赛
  10. mac运行ps特别慢_Mac Mac运行越来越慢?变卡顿?试试看这些加快小诀窍!