沈阳网站建设 网络服务,wordpress媒体库图片不显示,陈巴尔虎旗网站建设,西安做北郊做网站redis 介绍
Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存#xff0c;事件发布或订阅#xff0c;高速队列等场景。支持网络#xff0c;提供字符串#xff0c;哈希#xff0c;列表#xff0c;队列#xff0c;集合结构直接存取#xff0c;基于内存事件发布或订阅高速队列等场景。支持网络提供字符串哈希列表队列集合结构直接存取基于内存可持久化。
redis 集成
一、核心装配
1、RedisTemplate 注入 Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory,ObjectMapper objectMapper, KeyStringSerializer keyStringSerializer) {RedisTemplateString, Object template new RedisTemplate();template.setConnectionFactory(redisConnectionFactory);//key序列化方式RedisSerializerString defalutSerializer template.getStringSerializer();//值序列化方式RedisSerializerObject jsonRedisSerializer new GenericJackson2JsonRedisSerializer(objectMapper);//设置key 的序列化方式template.setKeySerializer(keyStringSerializer);template.setHashKeySerializer(keyStringSerializer);//设置值 的序列化方式template.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);//设置默认的序列化方式template.setDefaultSerializer(defalutSerializer);template.afterPropertiesSet();return template;}2、自自定义key 序列化 , redisKeyPrefix前缀兼容多项目隔离
Slf4j
public class KeyStringSerializer implements RedisSerializerString {private final Charset charset;public KeyStringSerializer() {this.charset StandardCharsets.UTF_8;}Autowiredprivate CustomRedisProperties redisProperties;Overridepublic byte[] serialize(String s) throws SerializationException {String newValue getKeyPrefix() s;return newValue.getBytes(charset);}Overridepublic String deserialize(byte[] bytes) throws SerializationException {String saveKey new String(bytes, charset);String keyPrefix getKeyPrefix();if (StrUtil.isNotBlank(keyPrefix)) {int indexOf saveKey.indexOf(keyPrefix);if (indexOf 0) {log.info(key缺少前缀);} else {saveKey saveKey.substring(indexOf);}log.info(saveKey:{}, saveKey);}return saveKey;}private String getKeyPrefix() {return redisProperties.getRedisKeyPrefix();}二、redis操作封装
注入bean实例方便引用 Beanpublic RedisService redisService(ObjectMapper objectMapper, RedisTemplateString, Object redisTemplate) {return new DefaultRedisServiceImpl(objectMapper, redisTemplate);}RedisService 接口实现
package com.hxl.redis.load;import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;/*** Author hxl* description* Date 2023-06-14 16:19**/
public interface RedisService {/*** *公共基础操作***/Boolean exists(String key);Boolean expire(String key, long timeout);Boolean expire(final String key, final long timeout, final TimeUnit unit);int delete(String... keys);Boolean delete(String key);/*** *基础类型(Integer、String、实体类等) 操作***/Boolean set(String key, Object value);Boolean set(String key, Object value, long expireTime);Boolean set(String key, Object value, long expireTime, TimeUnit timeUnit);String get(String key);T T getObject(String key, ClassT type);T ListT getObjectList(String key, ClassT type);/*** *双向列表 list操作***/Long setCacheList(String key, Object value);Long setCacheList(String key, ListObject values);Long setLeftCacheList(String key, Object value);Long setLeftCacheList(String key, ListObject values);T T rightPop(String key, ClassT type);T T leftPop(String key, ClassT type);T ListT getCacheList(String key, ClassT type);Long size(String key);/*** *hash map操作**/Boolean hPut(String key, String hashKey, Object value);Boolean hPutAll(String key, MapString, String maps);Boolean hExists(String key, String field);Long hDelete(String key, Object... fields);MapObject, Object hGetAll(String key);Object hGet(String key, String field);ListObject hMultiGet(String key, CollectionObject fields);Long hSize(String key);/*** *set 集合 不重复**/boolean addSet(String key, Object value);boolean removeSet(String key, Object... value);SetObject getAllSet(String key);/*** *set 有序集合 不重复**/Boolean addZSet(String key, Object value, double score);Long removeZSet(String key, Object... value);/*** ZSet数据增加分数** param key key* param value value* param delta 分数* return duuble*/Double incrZSet(String key, Object value, double delta);/*** 升序 区间查询** param key key* param min 最小分数* param max 最大分数* return SetObject*/SetObject zSetRangeByScore(String key, double min, double max);/*** 降序 区间查询** param key key* param min 最小分数* param max 最大分数* return SetObject*/SetObject zSetRangeDescByScore(String key, double min, double max);
}
具实现见DefaultRedisServiceImpl
三、使用方法
1、pom 依赖
dependencygroupIdcom.hxl/groupIdartifactIdtower-boot-redis/artifactIdversion1.0.0-SNAPSHOT/version
/dependency2、yml 配置
edisKeyPrefix 项目前缀,会默认拼接key前缀
spring:redis:host: 127.0.0.1port: 6379database: 0password:timeout: 5000lettuce:pool:max-active: 8max-idle: 8max-wait: -1min-idle: 0redisKeyPrefix: towergithub 项目地址
https://github.com/sanxiaoshitou/tower-boot