java基础之连接redis

前言


给大家的话:这篇文章主要讨论java如何连接redis数据库

今天写的这篇文章之事抛砖引玉,我相信大家还有更好的思想,让我们一起思想交汇,创造更好的一切!
【题外话】我爱王梦!

资料下载

        所有本文用到的jar包以及资料我已经全部放到了百度网盘上,各位骚年还有妹子有需要的自己下载。连接如下:

        redis资料下载

        资料具体如何使用呢?只需要解压后,将redis文件夹对应的文件拷贝到你的电脑上,接下来选择对应的版本即可。
        之后在cmd中启动redis-server即可。
        至于jar包的用法我想大家都是知道的。


思考过程

        我希望大家在看过我写的博客之后要知其然,还要知其所以然,所以,我先带大家来捋一捋思考过程。


很明显,我们已经完成了redis服务器的启动,那我们该如何才能连接上服务器呢?
目前的方法只有一种,那即是redis为我们提供了一个简单的客户端,我们现在想用java连接,本质上其实就是实现一个java版本的redis客户端,那如何实现呢?
        一个客户端,最核心的构件就是与服务器的连接,我们的连接就是Jedis;但是,如果我们直接new一个出来的话好像不是那么优雅,redis的官方为我们提供了连接池,那连接池会提供我们连接,它怎莫知道我们想要怎样的连接呢?当然,我们需要进行配置,那么和配置相关的类,就派上了用场,当然还有连接池。


Created with Raphaël 2.1.0 开始构建 获得配置客户端对象并进行设置 获得连接池对象 得到连接 进行增删改查 完成操作

代码展示


        下面,我将redis的客户端类展示出来,大家按照代码结构对照流程图进行对比!

package com.weimob.redis;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 * 测试redis,当然只是测试了value的存储和删除 <br>
 * 尤其记得重要的一点就是切片和非切片的联系和区别
 * 
 * @author fulei.yang
 *
 */
public class MyRedis {
    private Jedis jedis;
    private JedisPool jedisPool;

    public MyRedis() {
        super();
        initPool();
        //4:得到连接,可以执行操作
        jedis = jedisPool.getResource();
    }

    /**
     * 初始化非切片池
     */
    private void initPool() {
        //1:得到配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2:开始设置
        config.setMaxTotal(20);
        config.setMaxIdle(5);
        config.setMaxWaitMillis(1000l);
        config.setTestOnBorrow(false);
        //3:得到连接池
        jedisPool = new JedisPool(config, "127.0.0.1", 6379);
    }

    public void keyOperate() {
    System.out.println("======================key==========================");
        // 清空数据
        System.out.println("清空库中所有数据:" + jedis.flushDB());
        // 判断key否存在
        System.out.println("判断key999键是否存在:" + jedis.exists("key999"));
        System.out.println("新增key001,value001键值对:" + jedis.set("key001", "value001"));
        System.out.println("判断key001是否存在:" + sharedJedis.exists("key001"));
        // 输出系统中所有的key
        System.out.println("新增key002,value002键值对:" + jedis.set("key002", "value002"));
        System.out.println("系统中所有键如下:");
        Set<String> keys = jedis.keys("*");
        Iterator<String> it = keys.iterator();
        while (it.hasNext()) {
            String key = it.next();
            System.out.println(key);
        }
        // 删除某个key,若key不存在,则忽略该命令。
        System.out.println("系统中删除key002: " + jedis.del("key002"));
        System.out.println("判断key002是否存在:" + sharedJedis.exists("key002"));
        // 设置 key001的过期时间
        System.out.println("设置 key001的过期时间为5秒:" + jedis.expire("key001", 5));
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
        // 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1
        System.out.println("查看key001的剩余生存时间:" + jedis.ttl("key001"));
        // 移除某个key的生存时间
        System.out.println("移除key001的生存时间:" + jedis.persist("key001"));
        System.out.println("查看key001的剩余生存时间:" + jedis.ttl("key001"));
        // 查看key所储存的值的类型
        System.out.println("查看key所储存的值的类型:" + jedis.type("key001"));
    }
}

代码解析


        通过上面的代码我们可以很清楚的看到,那就是代码和流程图是基本贴合的,就这样我们基本完成了客户端的构建,接下来的话,要做一些改进的话,就是在效率上做一些优化,当我们建立连接的那一刻,今天的讨论就完成了。


概念讨论-切片和非切片


在百度百科上查到的是这样的:

jedis切片(集群)

非切片(单机)

这样的话,集群方面的东西我还暂时了解不到,so就不多做讨论了。


总结

        今天的话我们主要看了一下redis客户端类的编写,其实我们更应该了解其大致流程,因为不断你是在连接那个数据库,你需要的步骤几乎都是一致的,so,骚年,技能get起来!
        祝大家猴年猴开森!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值