redis缓存与jedis工具类的使用

Redis缓存与Jedis工具类

  • Redis 数据库缓存
    一.简介
  1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

  2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

  3. Redis支持数据的备份,即master-slave模式的数据备份。

    二.下载
    下载地址:https://www.redis.net.cn/
    在这里插入图片描述
    三.解压后打开的样子
    在这里插入图片描述
    四.redis数据结构

    1.String --------- 字符串类型
    2.hash、map --------- 哈希类型
    3.list --------- 列表类型
    4.set(元素不可重复) --------- set集合类型
    5.sortedset(元素不可重复,自动排序)--------- 有序集合类型

五.操作命令

1.String类型:
存储: set key value
获取: get key
删除: del key

2.哈希类型:
存储: hset map key value
获取: hget map key
获取所有: hgetall map
删除: hdel map key

3.列表类型:
最左边添加: lpush key value
最右边添加: rpush key value
获取元素: lrange key start end
最右边删除: lpop key
最左边删除: rpop key

4.set集合类型:
存储: sadd key value
获取所有元素: smembers key
删除: srem key value

5.有序集合类型:
存储: zadd key number value
(注意): 存储中的number值是数字 是集合元素排序的依据。
获取元素: zrange key start end
删除: zrem key value

6.redis通用命令:
(1): keys * 查询所有的键
(2): type key 获取对应key的类型
(3): del key 删除指定key的元素

  • Jedis 工具类

1.jar包及配置文件:

jar包:
在这里插入图片描述
配置文件内容:
在这里插入图片描述
2.JedisPoolUtil工具类:

package com.hnpi.jedis;
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 {
        //读取配置文件
        InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");

        //创建Properties对象
        Properties pro = new Properties();

        //关联文件
        try {
            pro.load(is);
        } 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();
    }
}

3.Jedis的基本使用:

// jedis连接池
   // @Test
    public void test6() {

        // 通过连接池工具类获取对象
        Jedis jedis = JedisPoolUtils.getJedis();

        // 存储数据
        jedis.set("users","王帅帅");

        // 获取数据
        String users = jedis.get("users");
        System.out.println(users);

        // 归还连接
        if (users!=null)
        jedis.close();
    }

4.五种数据结构的基本使用:
(1)String类型

public class JedisTest {
   // @Test
    public void test1(){
    
        // 1.获取数据库连接
        Jedis jedis = new Jedis();
        // 2.操作
        // 存储数据
        jedis.set("name", "wangshuaishuai");
        jedis.set("age", "20");
        // 获取数据
        jedis.get("name");
        jedis.get("age");
        // 删除数据
        jedis.del("age");
        // 可以使用setex()方法存储可以指定过期时间的元素
        //存入一个值key为sex  value为‘男’  20秒后自动删除该元素
        jedis.setex("sex",20,"男");
        // 3.归还连接
        jedis.close();
    }

(2)hash 类型 只能存储字符串类型的数据

 //@Test
    public void test2() {
        // 1.获取连接
        Jedis jedis = new Jedis();
        // 2.操作
        // 存储数据
        jedis.hset("Student","name","wangshuai");
        jedis.hset("Student","age","20");
        jedis.hset("Student","sex","男");
        // 获取数据 返回字符串类型
        String hget = jedis.hget("Student", "name");
        // 删除数据
        jedis.hdel("Student","sex");
        // 获取hash的所有map数据
        Map<String, String> student = jedis.hgetAll("Student");
        // 转换成 keyset
        Set<String> strings = student.keySet();
        // 遍历输出
        for (String key:strings) {
            String s = student.get(key);
            System.out.println(s);
        }
        // 3.归还连接
        jedis.close();
    }

(3)列表类型 只能存储字符串类型的数据

///@Test
    public void test3() {
        // 1.获取连接
        Jedis jedis = new Jedis();
        // 2.操作
        // 存储
        jedis.lpush("list","a","b","c"); //从左边存   cba   // 一次可以存多个值
        jedis.rpush("list","a","b","c"); //从右边存   abc
        // 获取   jedis.lrabfe(获取key的名称 开始索引到结束索引)
        List<String> list = jedis.lrange("list",0,-1); //获取所有的从0索引到-1索引
        System.out.println("删除前:" + list);
        // 删除 删除后会给出一个返回值 返回值就是删除的这个元素
        String list1 = jedis.lpop("list");  // 从左边删除
        System.out.println("删除最左边的一个元素:" + list1);
        String list2 = jedis.rpop("list");  // 从右边删除
        System.out.println("删除最右边的一个元素:" + list2);
        // 再次遍历 看删除后的结果
        List<String> lists = jedis.lrange("list",0,-1); //获取所有的从0索引到-1索引
        System.out.println("删除后:" + lists);
        // 3.归还连接
        jedis.close();
    }

(4)set集合类型 元素不重复

//@Test
    public void test4() {
        // 1.获取连接
        Jedis jedis = new Jedis();
        // 2.操作
        // 存储
        jedis.sadd("set","java","sql","Android");   // 一次可以存多个值
        // 获取
        Set<String> set = jedis.smembers("set");
        System.out.println(set);
        // 3.归还连接
        jedis.close();
    }

(5)有序集合类型 自动排序 元素不重复

  //@Test
    public void test5() {
        // 1.获取连接
        Jedis jedis = new Jedis();
        //存储
        //              键      数字排序的依据      键对应的value值
        jedis.zadd("user",2,"王");
        jedis.zadd("user",1,"刘");
        jedis.zadd("user",3,"谢");
        //获取
        Set<String> name = jedis.zrange("user", 0, -1);
        System.out.println(name);
        // 3.归还连接
        jedis.close();
    }
}
发布了33 篇原创文章 · 获赞 35 · 访问量 1607

猜你喜欢

转载自blog.csdn.net/weixin_45216092/article/details/102539936