Commit 14461495 authored by yaobaizheng's avatar yaobaizheng

添加redis

parent 486042e6
# 数据源配置 # 数据源配置
spring: spring:
redis:
host: r-2zekq6swp5wr808a3lpd.redis.rds.aliyuncs.com
port: 6379
password: techbook4redis#&20190909
timeout: 20000
database: 2
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://10.90.102.101:3306/liyeyun?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://rm-2ze10ohzb1898j5qdfo.mysql.rds.aliyuncs.com:3306/liyeyun?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: liyeyun
password: CF**ldcn password: CF**ldcn
# 从库数据源 # 从库数据源
slave: slave:
......
# 数据源配置 # 数据源配置
spring: spring:
redis:
host: r-2zekq6swp5wr808a3lpd.redis.rds.aliyuncs.com
port: 6379
password: techbook4redis#&20190909
timeout: 20000
database: 1
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
......
# 数据源配置 # 数据源配置
spring: spring:
redis:
host: r-2zekq6swp5wr808a3lpd.redis.rds.aliyuncs.com
port: 6379
password: techbook4redis#&20190909
timeout: 20000
database: 4
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
......
# 数据源配置 # 数据源配置
spring: spring:
redis:
host: r-2zekq6swp5wr808a3lpd.redis.rds.aliyuncs.com
port: 6379
password: techbook4redis#&20190909
timeout: 20000
database: 3
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
......
...@@ -48,8 +48,10 @@ ...@@ -48,8 +48,10 @@
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.24</version> <version>1.18.24</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.ruoyi.system.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* redis配置
*
* @author garden
*/
@Configuration
public class RedisConfig {
@Bean
@SuppressWarnings(value = {"unchecked", "rawtypes"})
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
template.setKeySerializer(stringRedisSerializer); // key的序列化类型
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer =
new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.activateDefaultTyping(
LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL,
JsonTypeInfo.As.PROPERTY);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
template.setValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型
template.setHashKeySerializer(stringRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
package com.ruoyi.system.constant;
/**
* @Author:zhouxudong
*
* @version: 1.0 @Date: 2023/11/29 15:30 @Description: redis key
*/
public class RedisConstants {
// ----------------------------redis key start----------------------------------------
// token信息
public static final String token = "Token:";
// 是否是经营人员
public static final String IS_OPERATION = "is_operation:";
// 用户 数据详情查看 剩余额度 map存储: 格式: key phone + ":" + type value
public static final String LIMIT_NUM = "limit_num";
// 字典表数据 key
public static final String DICT_DATA = "dict_data";
// ------------------------------end-------------------------------------------------
}
package com.ruoyi.system.enums;
public enum DefaultImgUrlEnum {
DEFAULT_KEY("default_img_url","redis中hashkey"),
DEVELOPMENT_PZZ_DEATIL("DEVELOPMENT_PZZ_DEATIL","开发区拍摄中详情"),
DEVELOPMENT_ZMZ_DEATIL("DEVELOPMENT_ZMZ_DEATIL","开发区招募中详情"),
PARK_PZZ_DEATIL("PARK_PZZ_DEATIL","产业园拍摄中详情"),
PARK_ZMZ_DEATIL("PARK_ZMZ_DEATIL","产业园招募中详情"),
LAND_DEATIL("LAND_DEATIL","土地拍摄中详情"),
CARRIR_DEATIL("CARRIR_DEATIL","载体拍摄中详情"),
DEVELOPMENT_PZZ_LIST("DEVELOPMENT_PZZ_LIST","开发区拍摄中列表"),
DEVELOPMENT_ZMZ_LIST("DEVELOPMENT_ZMZ_LIST","开发区招募中列表"),
PARK_PZZ_LIST("PARK_PZZ_LIST","产业园拍摄中列表"),
PARK_ZMZ_LIST("PARK_ZMZ_LIST","产业园招募中列表"),
LAND_LIST("LAND_LIST","土地拍摄中列表"),
CARRIR_LIST("CARRIR_LIST","载体拍摄中列表")
;
private final String code;
private final String name;
DefaultImgUrlEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
...@@ -2,6 +2,9 @@ package com.ruoyi.system.service.impl; ...@@ -2,6 +2,9 @@ package com.ruoyi.system.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.constant.RedisConstants;
import com.ruoyi.system.enums.DefaultImgUrlEnum;
import com.ruoyi.system.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysDefaultImgurlMapper; import com.ruoyi.system.mapper.SysDefaultImgurlMapper;
...@@ -54,6 +57,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService ...@@ -54,6 +57,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService
@Override @Override
public int insertSysDefaultImgurl(SysDefaultImgurl sysDefaultImgurl) public int insertSysDefaultImgurl(SysDefaultImgurl sysDefaultImgurl)
{ {
RedisUtil.delHashKey(RedisConstants.DICT_DATA, DefaultImgUrlEnum.DEFAULT_KEY.getCode());
sysDefaultImgurl.setCreateTime(DateUtils.getNowDate()); sysDefaultImgurl.setCreateTime(DateUtils.getNowDate());
return sysDefaultImgurlMapper.insertSysDefaultImgurl(sysDefaultImgurl); return sysDefaultImgurlMapper.insertSysDefaultImgurl(sysDefaultImgurl);
} }
...@@ -67,6 +71,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService ...@@ -67,6 +71,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService
@Override @Override
public int updateSysDefaultImgurl(SysDefaultImgurl sysDefaultImgurl) public int updateSysDefaultImgurl(SysDefaultImgurl sysDefaultImgurl)
{ {
RedisUtil.delHashKey(RedisConstants.DICT_DATA, DefaultImgUrlEnum.DEFAULT_KEY.getCode());
sysDefaultImgurl.setUpdateTime(DateUtils.getNowDate()); sysDefaultImgurl.setUpdateTime(DateUtils.getNowDate());
return sysDefaultImgurlMapper.updateSysDefaultImgurl(sysDefaultImgurl); return sysDefaultImgurlMapper.updateSysDefaultImgurl(sysDefaultImgurl);
} }
...@@ -80,6 +85,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService ...@@ -80,6 +85,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService
@Override @Override
public int deleteSysDefaultImgurlByIds(String ids) public int deleteSysDefaultImgurlByIds(String ids)
{ {
RedisUtil.delHashKey(RedisConstants.DICT_DATA, DefaultImgUrlEnum.DEFAULT_KEY.getCode());
return sysDefaultImgurlMapper.deleteSysDefaultImgurlByIds(Convert.toStrArray(ids)); return sysDefaultImgurlMapper.deleteSysDefaultImgurlByIds(Convert.toStrArray(ids));
} }
...@@ -92,6 +98,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService ...@@ -92,6 +98,7 @@ public class SysDefaultImgurlServiceImpl implements ISysDefaultImgurlService
@Override @Override
public int deleteSysDefaultImgurlById(Long id) public int deleteSysDefaultImgurlById(Long id)
{ {
RedisUtil.delHashKey(RedisConstants.DICT_DATA, DefaultImgUrlEnum.DEFAULT_KEY.getCode());
return sysDefaultImgurlMapper.deleteSysDefaultImgurlById(id); return sysDefaultImgurlMapper.deleteSysDefaultImgurlById(id);
} }
} }
package com.ruoyi.system.utils;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @Author:zhouxudong
*
* @version: 1.0 @Date: 2023/11/20 9:27 @Description: redis 工具类
*/
public class RedisUtil {
private RedisUtil() {}
@SuppressWarnings("unchecked")
private static RedisTemplate<String, Object> redisTemplate =
SpringUtil.getBean("redisTemplate", RedisTemplate.class);
/**
* 设置有效时间 单位默认秒
*
* @param key Redis键
* @param timeout 超时时间
* @return true=设置成功;false=设置失败
*/
public static boolean expire(final String key, final long timeout) {
return expire(key, timeout, TimeUnit.SECONDS);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @param unit 时间单位
* @return true=设置成功;false=设置失败
*/
public static boolean expire(final String key, final long timeout, final TimeUnit unit) {
Boolean ret = redisTemplate.expire(key, timeout, unit);
return ret != null && ret;
}
/**
* 删除单个key
*
* @param key 键
* @return true=删除成功;false=删除失败
*/
public static boolean del(final String key) {
Boolean ret = redisTemplate.delete(key);
return ret != null && ret;
}
/**
* 删除多个key
*
* @param keys 键集合
* @return 成功删除的个数
*/
public static long del(final Collection<String> keys) {
Long ret = redisTemplate.delete(keys);
return ret == null ? 0 : ret;
}
/**
* 存入普通对象
*
* @param key Redis键
* @param value 值
*/
public static void set(final String key, final Object value) {
redisTemplate.opsForValue().set(key, value);
}
// 存储普通对象操作
/**
* 存入普通对象
*
* @param key 键
* @param value 值
* @param timeout 有效期,单位秒
*/
public static void set(final String key, final Object value, final long timeout) {
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
}
public static void set(final String key, final Object value, final long timeout,TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
/**
* 获取普通对象
*
* @param key 键
* @return 对象
*/
public static Object get(final String key) {
return redisTemplate.opsForValue().get(key);
}
/**
* @description: 获取key的剩余过期时间 如果key不存在 或者没有设置过期时间 返回 -1
* @date: 2023/11/23 9:53
* @param: [key]
* @return: java.lang.Long
**/
public static Long getExpire(final String key){
return redisTemplate.getExpire(key);
}
// 存储Hash操作
/**
* 往Hash中存入数据
*
* @param key Redis键
* @param filed Hash filed键
* @param value 值
*/
public static void hPut(final String key, final String filed, final Object value) {
redisTemplate.opsForHash().put(key, filed, value);
}
/**
* 往Hash中存入多个数据
*
* @param key Redis键
* @param filedMap Hash键值对
*/
public static void hPutAll(final String key, final Map<String, Object> filedMap) {
redisTemplate.opsForHash().putAll(key, filedMap);
}
/**
* 获取Hash中的数据
*
* @param key Redis键
* @param filed Hash filed键
* @return Hash中的对象
*/
public static Object hGet(final String key, final String filed) {
return redisTemplate.opsForHash().get(key, filed);
}
/**
* 返回哈希表 key 中,所有的域和值。
* 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
*/
public static Map<Object,Object> hGetAll(final String key){
return redisTemplate.opsForHash().entries(key);
}
/**
* 获取多个Hash中的数据
*
* @param key Redis键
* @param fileds Hash filed键集合
* @return Hash对象集合
*/
public static List<Object> hMultiGet(final String key, final Collection<Object> fileds) {
return redisTemplate.opsForHash().multiGet(key, fileds);
}
/**
* @description: 删除指定redis 中 hash类型某个key
* @date: 2023/11/27 16:57
* @param: [key, fileds]
* @return: java.lang.Long
**/
public static boolean delHashKey(final String key,final String fileds){
return redisTemplate.opsForHash().delete(key,fileds)>0;
}
// 存储Set相关操作
/**
* 往Set中存入数据
*
* @param key Redis键
* @param values 值
* @return 存入的个数
*/
public static long sSet(final String key, final Object... values) {
Long count = redisTemplate.opsForSet().add(key, values);
return count == null ? 0 : count;
}
/**
* 删除Set中的数据
*
* @param key Redis键
* @param values 值
* @return 移除的个数
*/
public static long sDel(final String key, final Object... values) {
Long count = redisTemplate.opsForSet().remove(key, values);
return count == null ? 0 : count;
}
// 存储List相关操作
/**
* 往List左侧中存入数据
*
* @param key Redis键
* @param value 数据
* @return 存入的个数
*/
public static long lPush(final String key, final Object value) {
Long count = redisTemplate.opsForList().leftPush(key, value);
return count == null ? 0 : count;
}
/**
* 往List右侧中存入数据
*
* @param key Redis键
* @param value 数据
* @return 存入的个数
*/
public static long rPush(final String key, final Object value) {
Long count = redisTemplate.opsForList().rightPush(key, value);
return count == null ? 0 : count;
}
/**
* 往List中左侧存入多个数据
*
* @param key Redis键
* @param values 多个数据
* @return 存入的个数
*/
public static long lPushAll(final String key, final Collection<Object> values) {
Long count = redisTemplate.opsForList().leftPushAll(key, values);
return count == null ? 0 : count;
}
/**
* 往List中左侧存入多个数据
*
* @param key Redis键
* @param values 多个数据
* @return 存入的个数
*/
public static long lPushAll(final String key, final Object... values) {
Long count = redisTemplate.opsForList().leftPushAll(key, values);
return count == null ? 0 : count;
}
/**
* 往List中右侧存入多个数据
*
* @param key Redis键
* @param values 多个数据
* @return 存入的个数
*/
public static long rPushAll(final String key, final Collection<Object> values) {
Long count = redisTemplate.opsForList().rightPushAll(key, values);
return count == null ? 0 : count;
}
/**
* 往List中右侧存入多个数据
*
* @param key Redis键
* @param values 多个数据
* @return 存入的个数
*/
public static long rPushAll(final String key, final Object... values) {
Long count = redisTemplate.opsForList().rightPushAll(key, values);
return count == null ? 0 : count;
}
/**
* 从List中获取begin到end之间的元素
*
* @param key Redis键
* @param start 开始位置
* @param end 结束位置(start=0,end=-1表示获取全部元素)
* @return List对象
*/
public static List<Object> listGetRange(final String key, final int start, final int end) {
return redisTemplate.opsForList().range(key, start, end);
}
/**
* 从List左侧弹出数据
*
* @param key Redis键
* @return 对象
*/
public static Object listGetL(final String key) {
return redisTemplate.opsForList().leftPop(key);
}
/**
* 从List右侧弹出数据
*
* @param key Redis键
* @return 对象
*/
public static Object listGetR(final String key) {
return redisTemplate.opsForList().rightPop(key);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment