项目描述
上传时间
浏览人数
一、获取Redis安装文件的压缩包
(过程略,建议做伸手党)
二、解压缩
创建Redis安装目录,将压缩包解压至目录下。
三、安装Redis
在安装目录的地址栏输入cmd,进入Windows命令提示符,输入下列指令。
redis-server.exe --service-install redis.windows.conf
这一步是为了将Redis注册到电脑的服务中,方便下一步设置开机启动。
得到下图反馈内容,即为安装成功。
四、设置开机启动
找到"我的电脑",右键选择"管理",点击左侧的"服务",找到 Redis 双击打开,启动类型选择"自动",点击启动。
至此,开机自动运行Redis服务设置完成。
五、安装Redis可视化工具:RedisDesktopManager
安装过程略,安装完成后运行,界面如图所示。
六、可视化工具连接Redis服务
点击左下方绿色?。
Name自行填写;Host填写IDEA启动域名(本地为127.0.0.1);Port填写Redis默认占用的端口6379。
七、在IDEA里配置Redis
①在 pom.xml 内添加依赖
[ Fastjson是一个java库,可以将java对象转换为JSON格式,也可将JSON格式转换为java对象 ]
<!--redis技术依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- fastjson依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
②在 application.properties 内添加配置文件
host:IDEA启动域名(本地为localhost);
port:Redis默认占用端口6379;
password:连接本地Redis无需密码;
database:选择存值的表,按照 RedisDesktopManager 的索引进行选择(例:0对应db0)。
# redis配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0
③建立配置包,创建配置类
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 设置value的序列化规则和 key的序列化规则
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
④创建 Service层 和 Impl层
Service层如下所示:
@Service
public interface RedisService {
//保存数据
boolean set(final String key, Object val);
//保存数据 带失效时间
boolean set(final String key, Object val, long timeAsSecond);
//获取数据
Object get(final String key);
// 存值到redis的Map中
boolean setMap(final String key, String itemKey, Object val);
// 存值到redis的Map中 带失效时间
boolean setMap(final String key, String itemKey, Object val, long timeAsSecond);
// 取值 Map 所有
Object getMap(final String key);
// 取值 Map
Object getMap(final String key, String itemKey);
//删除key
boolean deleteByKey(final String key);
//删除Map下的指定key
boolean deleteMap(final String key, String itemKey);
//添加到List
boolean setList(final String key, Object val);
//添加到List 带失效时间
boolean setList(final String key, Object val,long timeAsSecond);
//获取List中所有数据
List<Object> getList(final String key);
//获取list中指定索引的数据
Object getList(final String key, long idx);
}
Impl层如下所示:
@Service
public class RedisServiceImpl implements RedisService {
@Autowired
private RedisTemplate redisTemplate;
//保存数据
@Override
public boolean set(String key, Object val) {
try {
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
operations.set(key, val);
return true;
} catch (Exception e) {
return false;
}
}
//保存数据 带失效时间
public boolean set(final String key, Object val, long timeAsSecond) {
try {
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
operations.set(key, val);
redisTemplate.expire(key, timeAsSecond, TimeUnit.SECONDS);
return true;
} catch (Exception e) {
return false;
}
}
//获取数据
@Override
public Object get(String key) {
try {
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
return operations.get(key);
} catch (Exception e) {
return null;
}
}
// 存值到redis的Map中
@Override
public boolean setMap(String key, String itemKey, Object val) {
try {
redisTemplate.opsForHash().put(key, itemKey, val);
return true;
} catch (Exception e) {
return false;
}
}
// 存值到redis的Map中 带失效时间
@Override
public boolean setMap(String key, String itemKey, Object val, long timeAsSecond) {
try {
redisTemplate.opsForHash().put(key, itemKey, val);
redisTemplate.expire(key, timeAsSecond, TimeUnit.SECONDS);
return true;
} catch (Exception e) {
return false;
}
}
// 取值 Map 所有
@Override
public Object getMap(String key) {
try {
return redisTemplate.opsForHash().entries(key);
} catch (Exception e) {
return null;
}
}
// 取值 Map
@Override
public Object getMap(String key, String itemKey) {
try {
return redisTemplate.opsForHash().get(key, itemKey);
} catch (Exception e) {
return null;
}
}
//删除key
@Override
public boolean deleteByKey(String key) {
return redisTemplate.delete(key);
}
//删除Map下的指定key
@Override
public boolean deleteMap(String key, String itemKey) {
long deleted = redisTemplate.opsForHash().delete(key, itemKey);
return deleted != 0 ? true : false;
}
//添加到List
@Override
public boolean setList(String key, Object val) {
long added = redisTemplate.opsForList().rightPush(key, val);
return added != 0 ? true : false;
}
//添加到List 带失效时间
@Override
public boolean setList(String key, Object val, long timeAsSecond) {
long added = redisTemplate.opsForList().rightPush(key, val);
redisTemplate.expire(key, timeAsSecond, TimeUnit.SECONDS);
return added != 0 ? true : false;
}
//获取List中所有数据
@Override
public List<Object> getList(String key) {
return redisTemplate.opsForList().range(key, 0, -1);
}
//获取list中指定索引的数据
@Override
public Object getList(String key, long idx) {
return redisTemplate.opsForList().range(key, 0, -1).get((int)idx);
}
}
八、使用方法
需要加入Redis缓存或进行其他相关操作时,直接调用 Service层 的相应函数即可。
==========END==========