亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何開發redis的二級緩存

小新
356
2020-12-25 15:09:24
欄目: 云計算

如何開發redis的二級緩存

開發redis二級緩存的示例:

redis二級緩存的實現,主要是重寫了Cache.java的方法,代碼:

public class  implements Cache {

    private static final Logger logger = LoggerFactory.getLogger(MybatisRedisCache.class);

    private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

    private RedisTemplate redisTemplate;

    private String id;

    

    private static final long EXPIRE_TIME_IN_MINUTES = 30;

    public (String id){

        if (id==null){

            throw new IllegalArgumentException("Cache instances require an ID");

        }

        logger.info("=====================================Redis cache id = "+id);

        this.id = id;

    }

    

    public String getId() {

        return id;

    }

    

    public void putObject(Object key, Object value) {

        logger.debug("==============================redis put= "+key);

        RedisTemplate redisTemplate = getRedisTemplate();

        ValueOperations opsForValue = redisTemplate.opsForValue();

        opsForValue.set(key, value, EXPIRE_TIME_IN_MINUTES, TimeUnit.MINUTES);

    }

    

    public Object getObject(Object key) {

        logger.debug("================================redis get================================");

        RedisTemplate redisTemplate = getRedisTemplate();

        ValueOperations opsForValue = redisTemplate.opsForValue();

        return opsForValue.get(key);

    }

    

    public Object removeObject(Object key) {

        logger.debug("==========================================redis remove==========================");

        RedisTemplate redisTemplate = getRedisTemplate();

        redisTemplate.delete(key);

        return null;

    }

    

    public void clear() {

        logger.debug("=====================================clear redis================================");

        RedisTemplate redisTemplate = getRedisTemplate();

        redisTemplate.execute(new RedisCallback() {

            @Override

            public Object doInRedis(RedisConnection connection) throws DataAccessException {

 大專欄  redis實現二級緩存

                connection.flushDb();

                return "OK";

            }

        });

    }

    @Override

    public int getSize() {

        return 0;

    }

    @Override

    public ReadWriteLock getReadWriteLock() {

        return readWriteLock;

    }

    public RedisTemplate getRedisTemplate() {

        if (redisTemplate == null) {

            redisTemplate = ApplicationContextHolder.getBean("redisTemplate");

        }

        return redisTemplate;

    }

    public void setRedisTemplate(RedisTemplate redisTemplate) {

        this.redisTemplate = redisTemplate;

    }

}

使用redisTemplate方法實現一個ApplicationContextHolder工具類,代碼:

@Component

public class ApplicationContextHolder implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override

    public void setApplicationContext(ApplicationContext ctx) throws BeansException {

        applicationContext = ctx;

    }

    /**

     * Get application context from everywhere

     *

     * @return

     */

    public static ApplicationContext getApplicationContext() {

        return applicationContext;

    }

    /**

     * Get bean by class

     *

     * @param clazz

     * @param <T>

     * @return

     */

    public static <T> T getBean(Class<T> clazz) {

        return applicationContext.getBean(clazz);

    }

    /**

     * Get bean by class name

     *

     * @param name

     * @param <T>

     * @return

     */

    @SuppressWarnings("unchecked")

    public static <T> T getBean(String name) {

        return (T) applicationContext.getBean(name);

    }

}

在mapper中添加自定義cache,使用二級緩存,例如:

<cache type="com.yif.utils.MybatisRedisCache" eviction="LRU"/>

0
兴海县| 雅安市| 特克斯县| 渝中区| 太康县| 平顶山市| 永新县| 武义县| 伊通| 大足县| 中方县| 乌兰察布市| 墨江| 汉寿县| 昌江| 即墨市| 昌宁县| 瑞昌市| 元阳县| 手游| 吉安县| 吉首市| 富顺县| 离岛区| 清河县| 峡江县| 龙海市| 黄浦区| 全椒县| 垣曲县| 深州市| 甘孜| 三原县| 美姑县| 鄂托克前旗| 铜鼓县| 永济市| 永平县| 梧州市| 鹰潭市| 荔波县|