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;
}
}