03. redis的java客户端jedis

Redis的Java客户端Jedis

Jedis:一款java操作redis数据库的工具

一、使用步骤

  1. 导入相关的jar包

    • commons-pool2-2.3.jar
    • jedis-2.7.0.jar
  2. 获取连接(默认本机,端口6379)

Jedis jedis = new Jedis(); // 默认本机,端口6379
Jedis jedis = new Jedis("localhost", 6379);
  1. 操作
jedis.set("username", "晓庆");
  1. 关闭链接
jedis.close();

二、Jedis操作各种redis中的数据结构

接口方法和基本命令语法是一样的!,下面的案例省略连接和关闭步骤

1.字符串类型string

  1. set 设置;
jedis.set("username", "小红");
  1. get 获取
String username = jedis.get("username");
  1. setex(key, lifetime秒, value): 指定过期时间
jedis.setex("username",5,  "小红");
  1. del: 删除(通用)
jedis.del("username");

2.hash类型: map格式

  1. hset: 设置
jedis.hset("user", "name", "晓庆");
jedis.hset("user", "age", "18");
jedis.hset("user", "gender", "male");
  1. hget: 获取一个
String name = jedis.hget("user", "name");
  1. hgetAll:获取所有
Map<String, String> map = jedis.hgetAll("user");
map.forEach((key, value) -> System.out.println(key + ":" + value));
  1. hdel:删除
jedis.hdel("user", "name");

3.列表类型list: linkedList格式,支持重复元素

  1. lpush/rpush: 列表左边/右边添加
jedis.lpush("myList", "a", "b", "c");
jedis.rpush("myList", "1", "2", "3");
  1. lrange start end: 范围获取
List<String> myList = jedis.lrange("myList", 0, -1);
myList.forEach(System.out::print);
  1. lpop/rpop: 删除:列表左边/右边出队列
String lPop = jedis.lpop("myList");

String rPop = jedis.rpop("myList");

4.集合类型set:

不允许重复的元素

  1. sadd:添加
jedis.sadd("mySet", "java", "python", "c", "javaScript");
  1. smembers:获取所有元素
Set<String> set = jedis.smembers("mySet");
set.forEach(System.out::print);
  1. srem:删除
jedis.srem("mySet", "javaScript");

5.有序集合sortedset:

不允许重复元素,且元素有序

  1. zadd: 添加
jedis.zadd("score", 80, "齐天大圣");
jedis.zadd("score", 25, "弼马温");
jedis.zadd("score", 100, "斗战胜佛");
  1. zrange: 范围获取
Set<String> set = jedis.zrange("score", 0, -1);
set.forEach(System.out::print);
  1. zrem: 删除
jedis.zrem("score", "弼马温");

6.通用命令

统一处理

1.查找所有的键

jedis.keys("*").forEach(System.out::print);

2.查询类型

jedis.type("score");

3.集体删除del(String[] str) 可变长参数

String[] strs = {"score", "myset", "user", "mylist"};
jedis.del(strs);

三、Jedis连接池:JedisPool

1.JedisPoll基本使用

  • 使用步骤
    • 1.(可选)创建一个配置对象
    • 2.创建Jedis连接池对象(可选:传参->配置)
    • 3.获取连接
    • 4.使用
    • 5.归还连接
// 1. 创建一个配置对象【可选】
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); // 最大允许的连接数
config.setMaxIdle(10);  // 最大空闲连接

// 创建Jedis连接池对象
// 2.1 默认配置、关闭连接池
JedisPool jedisPool0 = new JedisPool();
jedisPool0.close();

// 2.2 指定配置文件
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);

// 3. 获取连接
Jedis jedis = jedisPool.getResource();

// 4. 使用
jedis.set("name", "小懒");

// 5. 归还连接池
jedis.close();

2.JedisPoll连接池配置介绍

jedis.properties配置介绍

# 最大活动对象数
redis.pool.maxTotal=1000
# 最大能够保持idel状态的对象数
redis.pool.maxIdle=100
# 最小能够保持idel状态的对象数
redis.pool.minIdle=50
# 当池内没有返回对象时,最大等待时间
redis.pool.maxWaitMillis=10000
# 当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
# 当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
# “空闲链接”检测线程,检测的周期、毫秒数、如果为负值,表示不运行“检测线程”,默认值为-1
redis.pool.timeBetweenEvictionRunsMillis=30000
# 向调用者输出“链接”对象时,是否检测它的空闲超时
redis.pool.testWhileIdle=true
# 对于“空闲链接”监测系那成而言,每次检测的连接资源的个数,默认为3
redis.pool.numTestsPerEvictionRun=50
# redis服务器的IP
redis.ip=xxxxxx
# redis服务器的Port
redis1.port=6379

3.连接池工具类实现

  1. 配置文件jedis.properties
host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10
  1. JedisPoolUtils.java
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;

public class JedisPoolUtils {

    private static JedisPool jedisPool;

    static {
        // 读取配置文件
        Properties pro = new Properties();
        InputStream in = JedisPoolUtils.class
                .getClassLoader()
                .getResourceAsStream("jedis.properties");
        try {
            pro.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            // ?这个地方需要关闭流不?
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 获取数据,设置到JedisPoolConfig中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));

        // 初始化JedisPool
        jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
    }

    /**
     * 获取连接
     */
    public static Jedis getJedis() {
        return jedisPool.getResource();
    }
}

四、小试牛刀

1.需求

  1. 提供index.html页面,页面中有一个省份 下拉列表
  2. 当 页面加载完成后 发送ajax请求,加载所有省份

2.友情提示

数据库的数据一旦发生改变,则需要更新缓存

  1. 数据库的表执行 增删改的相关操作,需要将redis缓存数据情况,再次存入
  2. 在service对应的增删改方法中,将redis数据删除。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容