SpringBoot 使用 redis以及windo 环境下redis安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_38151745/article/details/85535173

redis 简介

Redis 是一个可以持久存储的缓存系统。 是一个高性能的key-value 数据库,使用键值对来存储数据

redis 提供给了 多种数据类型用来存储数据:
Key 可以是任意类型,但是最终会存储为 byte[]

String 简单的(key value)存储接口,支持数据的自增,支持BitSet 结构

Hash 哈希表数据结构,支持对field 的自增等操作

List 列表 ,支持按照索引,索引范围获取元素以及Pop Push 等堆栈操作

set 集合 及Zset 有序集合

在存入redis 时要生成一个唯一的key 在查询和删除数据时,可以使用找个key 进行相关操作

redis 功能:

redis 的功能非常强大,既可以作为数据库也可以作为护岸村,还能当作队列,总团体来讲,有以下用途
1.简单的string, 可以作为 memcached替代品,用作缓存系统
2.使用list 的pop 和Push 功能 可以作为阻塞队列/非阻塞队列
3.使用subscribe 和publish 实现发布/订阅模式
4.对数据进行实时分析。
5.使用setz 做去重的计数统计
6.使用SortedSet 在排序

注意事项

由于redis 存储是以内存为主,因此如何节省内存是非常关键的地方。
首先,key越短越好,可以采取编码或者简写的方式。 同时key的数量也需要控制,可以考虑使用hash做二级缓存存储来合并类似的key 从而减少key 到底数量
其次,value 也是越小也好,尤其是在存储序列化后的字节时,要选择最节省内存到底序列化方式。
有一点需要注意 的是 ,在保存在redis 数据库中的数据默认是永久存储的,推荐指定一个时限来确定数据的声明周期,超过时间限制的数据会被删除。

Spring Boot对于 redis 的支持

StringRedisTemplate与RedisTemplate
都是redis 用来操作数据的类 虽然StringRedisTemplate继承RedisTemplate,但是,两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据RedisTemplate只能管理RedisTemplate中的数据 ,需要说明的是,由于RedisTemplate 使用的序列话是 jdk的序列化策略 ,这样对于数据库的查看并不是很方便,因为jdk 序列化使用的是二进制形式存储数据,在查看数据的时候,无法明确的查看到数据的具体key

Spring 支持以下几种序列化方式,可以通过重写RedisTemplate 的序列化配置
StringRedisSerualizer 简单的字符串序列化,使用的是String.getBytess()方法,StringRedisTemplate 就是使用他作为key value hashKey 以及hashValue 的序列化实现的
GenericToStringSerializerr 可以将任何对象泛化为字符串序列化,对于每一种对象类型都有不同的实现
Jackson2JsonRedisSerializer JSON 的序列化方式,使用jackkson mapper 将object 序列化为json字符串
JdkSerializationRedisSerializer 使用jdk自带的序列化机制,也是直接使用RedisTemplate 时使用的序列化机制。
序列化重写代码:

@Configuration
public class RedisTemplateConfig {
    @Bean
    public RedisTemplate<String ,Object> redisTemplate(RedisConnectionFactory factory){
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        template.setKeySerializer(jackson2JsonRedisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashKeySerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

spring boot 使用redis 具体步骤

1.添加依赖

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

2.配置propertie文件

spring.redis.host=ip
spring.redis.port=6379
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0

3.创建实体类 ,实现序列化

public class User implements Serializable {
    private final static long serialVersionUID=1L;
    private String name;
    private int age;
    }

4.如果使用RedisTemplate 则重写redis 序列化配置
重写代码参考上面
5.使用RedisTemplate 编写具体的实现代码

    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    public void add(String key, Student student) {
        redisTemplate.opsForValue().set(key,student);
    }

window 下 redis 安装

1.下载 redis 安装包 ,推荐使用redis 压缩包。
2. 解压redis 打开cmd 进入redis 解压目录
3 是使用 .redis-server redis.windows.conf 使用该命令启动( 使用这种方式并不是很方便,所以下面将redis 注册为服务)
4。 注册为服务 redis-server --service-install redis.windows-service.conf --loglevel verbose
以上redis 就安装好了 , 可以下载redis-cli.exe 启动redis 客户端 进行测试

猜你喜欢

转载自blog.csdn.net/github_38151745/article/details/85535173
今日推荐