redis--jedis

Posted Jason–json

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis--jedis相关的知识,希望对你有一定的参考价值。

Jedis:java客户端操作redis数据库,类似JDBC

需要用到的包:jedis,commons-pool

代码示范:

1.Jedis操作字String

@Test
public void m1(){
    //1.获取连接
    Jedis jedis=new Jedis("127.0.0.1",6379);
    //2.操作
    jedis.set("name", "zhangsan"); //存储
    jedis.get("name"); //获取
    jedis.del("name");//删除
    //setex()方法,可以指定一堆键值对存储,在指定的时间内存储
    jedis.setex("pwd",20,"abc");
    //3.释放资源
    jedis.close();
}

2.Jedis操作字hash

@Test
public void m2(){
    //1.获取连接
    Jedis jedis=new Jedis();//如果空参默认,localhost本机ip,6379端口
    //2.操作
    jedis.hset("userTable","name","张三"); //存储
    jedis.hset("userTable","pwd","abc"); //存储
    String name = jedis.hget("userTable", "name");//获取单个值
    Map<String, String> userTable = jedis.hgetAll("userTable");//获取所有值
    jedis.hdel("userTable","name"); //删除
    //3.释放资源
    jedis.close();
}

3.jedis操作list

 @Test
    public void m3(){
        //1.获取连接
        Jedis jedis=new Jedis("127.0.0.1",6379);
        //2.操作
        jedis.lpush("myList","a"); //左边存
        jedis.lpush("myList","b"); //左边存
        jedis.rpush("myList","c"); //右边存
        jedis.lrange("myList",0,-1); //获取所有值
        jedis.rpop("myList");//删除右边元素
        jedis.lpop("myList");//删除左边元素
        //3.释放资源
        jedis.close();
    }

4.jedis操作set

@Test
    public void m4(){
        //1.获取连接
        Jedis jedis=new Jedis("127.0.0.1",6379);
        //2.操作
        jedis.sadd("mySet","456"); //填值
        jedis.sadd("mySet","789"); //填值
        Set<String> mySet = jedis.smembers("mySet"); //取值
        jedis.srem("mySet","456");//删除
        //3.释放资源
        jedis.close();
    }

5.jedis操作sortedset

@Test
    public void m5(){
        //1.获取连接
        Jedis jedis=new Jedis("127.0.0.1",6379);
        //2.操作
        jedis.zadd("student",5,"亚索");  //填值
        jedis.zadd("student",6,"猴子"); //填值
        jedis.zadd("student",1,"盲僧"); //填值
        Set<String> student = jedis.zrange("student", 0, -1); //取值
        jedis.zrem("student","猴子");//删除
        //3.释放资源
        jedis.close();
    }

 

连接池

代码实现:

@Test
    public void m6(){
        //创建连接池配置对像
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxIdle(5); //配置最大空闲连接
        poolConfig.setMaxTotal(3);//配置最大允许连接数
        //1.获取池对象
        JedisPool  jedisPool=new JedisPool(poolConfig,"localhost");
        //2.获取jedis对象
        Jedis jedis = jedisPool.getResource();
        //3.操作
        jedis.set("name", "盖伦"); //存储
        String name=jedis.get("name"); //获取
        //4.释放资源
    }

JedisPoolConfig 配置属性详解

连接池工具类

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
* JedisPool工具类
* 加载配置文件
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;

//加载配置文件,src文件下面
static {
//获取文件流对象
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建Properties对象
Properties properties = new Properties();
try {
//Properties对象加在流
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//创建JedisPool的配置类,赋值
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
poolConfig.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
jedisPool=new JedisPool(poolConfig,properties.getProperty("host"));
}

public static JedisPool getJedisPool() {
return jedisPool;
}
}

测试

 @Test
    public void m8(){
        //1.获取池对象
        JedisPool jedisPool = JedisPoolUtils.getJedisPool();
        //2.获取jedis对象
        Jedis jedis = jedisPool.getResource();
        //3.操作
        jedis.set("adc", "薇恩"); //存储
        String name=jedis.get("adc"); //获取
        //4.释放资源
    }

 

Jedis优化缓存

  程序运行需要提高运行效率,会将一些常用的数据,放在缓存中。

/**
* redis缓存优化
*/
public class UserServiceImpl {

public String findAll(){
//数据池工具获取jedis对象
Jedis jedis = JedisPoolUtils.getJedisPool().getResource();
//从redis数据库取值,为一个json格式的字符串
String user_josn = jedis.get("user");
//判断如果为空就冲关系型数据库取值
if (user_josn==null||user_josn.length()==0){
List<User> users = UserDao.findAll();
ObjectMapper mapper=new ObjectMapper();
try {
//将取的值转换成json格式
user_josn = mapper.writeValueAsString(users);

} catch (JsonProcessingException e) {
e.printStackTrace();
}
//并存入数据库
jedis.set("user",user_josn);
}
return user_josn;
}

}

 

  

 

以上是关于redis--jedis的主要内容,如果未能解决你的问题,请参考以下文章

Redis jedis Springboot整合redis

Redis6--Jedis篇

Redis学习总结(上)——Redis数据类型配置文件Jedis

使用Jedis连接Redis

redis jedis lpush为啥加前缀

封装redis(jedis)