首页 > 编程知识 正文

java取redis数据乱码,redis缓存使用场景

时间:2023-05-03 18:31:40 阅读:167217 作者:171

下午犯困,话不多说,直接上代码来品! 代码已详细注释

java代码实现 引入pom.xml <!--redis缓存--><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <!-- 格式化对象 转换 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> 创建Redis连接池 import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * @author wzq * @description * @date 2021/4/14 10:10 */public class RedisPool { private RedisPool(){ } private static JedisPool jedisPool; private static void initPool(){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); //连接池中最大的数量 jedisPoolConfig.setMaxTotal(1000); //空闲时连接池的连接数量 jedisPoolConfig.setMaxIdle(100); jedisPoolConfig.setMinIdle(100); // jedisPoolConfig.setTestOnReturn(true); jedisPoolConfig.setTestOnBorrow(true); jedisPool = new JedisPool(jedisPoolConfig, "192.168.42.166", 6379); } /** * 静态块,里面中的方法只会被执行一次 */ static { initPool(); } public static Jedis getConnection(){ return jedisPool.getResource(); }} 创建Redis工具类 import redis.clients.jedis.Jedis;​/** *@description *@author wzq *@date 2021/4/14 12:37 * */public class RedisUtil {​ /** * 放数据 * @param key * @param value */ public static void set(String key,String value){ Jedis connection = null; try { connection = RedisPool.getConnection(); connection.set(key, value); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); }finally { if(connection != null){ connection.close(); } }​ }​ /** * 取数据 * @param key * @return */ public static String get(String key){ Jedis connection = null; try { connection = RedisPool.getConnection(); return connection.get(key); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); }finally { if(connection != null){ connection.close(); } } }​ /** * 删数据 * @param key */ public static void delete(String key){ Jedis connection = null; try { connection = RedisPool.getConnection(); connection.del(key); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); }finally { if(connection != null){ connection.close(); } } }​​​​} 验证是否可以连接(单元测试) import org.junit.Test;​/** * @author wzq * @description * @date 2021/4/14 12:44 */public class TestRedis {​ @Test public void test1(){ RedisUtil.set("userName", "wang"); String userName = RedisUtil.get("userName"); System.out.println(userName);​ }} 结合项目在缓存取数据 //获取数据时 @Override public ServerResponse query() { //先在缓存中查找 cateList是往redis中的key String cateListRedis= RedisUtil.get("cateList"); //当缓存不为空时 if(StringUtils.isNoneEmpty(cateListRedis)){ //将JSON格式的字符串转化为java对象 List<Cate> cateList = JSON.parseArray(cateListRedis, Cate.class); //返回前台 return ServerResponse.success(cateList); } //缓存为空才会查询数据库并且往缓存放一份 List<Cate> cateList=cateMapper.query(); //将java对象转换为String[JSON格式的字符串]添加到缓存中 String toJSONString = JSON.toJSONString(cateList); RedisUtil.set("cateList",toJSONString); //返回前台 return ServerResponse.success(cateList); } 脏数据处理

什么是脏数据 当缓存中的数据与数据库的数据不一致时就被称为脏数据

​//在新增、修改、删除后删除缓存脏数据​ RedisUtil.delete("cateList");

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。