Redis缓存与Jedis工具类
- Redis 数据库缓存
一.简介
-
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
-
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
-
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();
}
}