Java如何操作redis

一、前言

如果你对redis还不太了解的话可以翻看这篇文章,讲解的非常详细!!!

(6条消息) 什么是redis以及如何使用redis_涩即是Null的博客-CSDN博客icon-default.png?t=M1L8https://blog.csdn.net/weixin_51418964/article/details/123097822

二、下载Jedis的jar包

1. 什么是Jedis

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

2. 下载步骤

1. 官网下载链接:

Maven Repository: redis.clients » jedis (mvnrepository.com)icon-default.png?t=M1L8https://mvnrepository.com/artifact/redis.clients/jedis2. 找一个下载量比较大的(也可以下载最新的试试看)!

 3. 点击 jar(540k) 开始下载

4. 如果是Maven项目,可以直接复制代码到pom.xml中更方便。

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

 3. 将jar包导入idea项目中

1. 新建一个utils文件夹,然后把jedis的jar包复制进去

 2. 然后右键,点击 Add as Lbrary...

 三、下载JedisPool的jar包

1. 为什么要使用JedisPool

首先我们如果每次使用缓存都生成一个Jedis对象的话,这样意味着会建立很多socket连接,造成系统资源被不可控调用,甚至会导致奇怪错误的发生。

但是如果使用单例模式,在线程安全模式下适应不了高并发的需求,非线程安全模式又可能会出现与时间相关的错误。

因此,为了避免这些问题,引入了池的概念JedisPool。

JedissPool是一个线程安全的网络连接池,我们可以通过JedisPool创建和管理Jedis实例,这样可以有效的解决以上问题以实现系统的高性能。

2. 下载步骤

1. 点击官网链接下载

Pool – Download Apache Commons Poolicon-default.png?t=M1L8https://commons.apache.org/proper/commons-pool/download_pool.cgi2. 点击以bin.zip结尾的下载

 3. 解压,复制jar包到项目文件夹下。导入方法与jedis一样。

 四、测试使用

1.打开redis服务器

2. 编写测试代码

@Test
    public void Test(){
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(100);            //最大允许连接数
        config.setMaxIdle(10);           //最大空闲连接数
        // 设置Jedis连接池
        JedisPool jedisPool = new JedisPool(config,"localhost",6379);
        Jedis jedis = jedisPool.getResource();           //获取连接
        jedis.set("hello","wocao");                    // 设置数据
        System.out.println(jedis.get("hello"));       // 获取数据
        jedis.close();                                // 关闭资源
    }

3. 运行结果

如果可以看见绿色的对勾则证明导入没有问题!!!

 4. 如何更方便的使用jedis

1. 先编写一个jedis.properties的文件

host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10

 2. 再写一个JedisUtils的工具包

public class JedisUtils {
    private static JedisPool jedisPool;
    static {
        //创建Properties对象
        Properties properties = new Properties();
        //关联文件
        try {
            //读取配置文件
            properties.load(JedisUtils.class.getClassLoader().getResourceAsStream("jedis.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取数据,设置到JedisPoolConfig中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
        config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
        //初始化JedisPool
        jedisPool = new JedisPool(config,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));
    }
    /**
     * 获取连接方法
     */
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

3. 编写Jedis连接池测试

@Test
    public void TestPool(){
        Jedis jedis = JedisUtils.getJedis();      // 使用Utils工具类获取连接
        jedis.set("hello","redisPool");
        System.out.println(jedis.get("hello"));
        jedis.close();
    }

4. 运行结果 

5. 获取各种数据类型

1. String类型测试

@Test
    public void Test1(){
        Jedis jedis = new Jedis("localhost",6379);              //获取连接,默认空参为localhost 6379
        jedis.set("username","zhangsan");                //操作
        String username = jedis.get("username");           //获取
        System.out.println(username);
        jedis.close();                       //关闭连接
        jedis.setex("activcode",20,"woqiao");           //设置一个20秒以后自动删除的key
    }

 2. hash数据结构测试

@Test
public void Test2(){
        Jedis jedis = new Jedis();
        jedis.hset("user","name","lisi");
        jedis.hset("user","gender","男");
        jedis.hset("user","age","23");
        String name = jedis.hget("user", "name");
        System.out.println(name);
        Map<String, String> user = jedis.hgetAll("user");
        System.out.println(user);
        jedis.close();
}

3. List数据结构测试

@Test
    public void Test3(){
        Jedis jedis = new Jedis("localhost",6379);
        jedis.lpush("mylist","a","b","c");
        jedis.rpush("mylist","a","b","c");
        List<String> mylist = jedis.lrange("mylist", 0, -1);    //范围获取
        System.out.println(mylist);                     //[c, b, a, a, b, c]
        String mylist1 = jedis.lpop("mylist");
        System.out.println(mylist1);                      //c
        String mylist2 = jedis.rpop("mylist");
        System.out.println(mylist2);                     //c
        jedis.close();
    }

4. set数据结构测试

@Test
    public void Test4(){
        Jedis jedis = new Jedis();
        jedis.sadd("myset","apple","banana","cat");

        Set<String> myset = jedis.smembers("myset");
        System.out.println(myset);             //[banana, apple, cat]
        jedis.close();
    }

5. sortedset数据结构测试

@Test
    public void Test5(){
        Jedis jedis = new Jedis();
        jedis.zadd("mysortedset",3,"亚瑟");
        jedis.zadd("mysortedset",30,"后裔");
        jedis.zadd("mysortedset",55,"孙悟空");
        // sortedset 获取
        Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
        System.out.println(mysortedset);             //[亚瑟, 后裔, 孙悟空]
        jedis.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值