原创

Redis笔记<第二章>


SpringBoot整合

springboot操作数据:spring-data jpa jdbc mongodb redis

​ springdata也是和springboot齐名的项目

​ 在springboot 2.x 以后 原来使用的jedis被替换为了lettuce

​ jedis: 采用的是直连,有多个线程操作的话,是不安全的,想要安全就得使用jedis pool连接池 更像BIO模式

​ lettuce: 采用netty,实例可以在多个线程中共享,不存在线程不安全的情况,可以减少线程数量 更像NIO模式

​ 导入依赖

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

​ 配置redis

spring.redis.host=127.0.0.1
spring.redis.port=6379

​ 测试连接

		//注入redisTemplate
		@Autowired
		private RedisTemplate redisTemplate;
		操作不同的数据类型,事务和基本的增删改查
		redisTemplate.opsForValue()是操作字符串的
					 .opsForList() 是操作list的
					 .....
		//获取redis的连接对象
		RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();

默认的序列化方式是jdk,我们可能会使用json来序列化

		User user = new User("ityang", 5);
        String jsonUser = new ObjectMapper().writeValueAsString(user);
        redisTemplate.opsForValue().set("user",jsonUser);
        System.out.println(redisTemplate.opsForValue().get("user"));

存入对象的时候,应该序列化这对象,不然会报错

所有的对象需要序列化

可以序列化成json 也可以在实体类上实现Serializable这个接口

通用的序列化配置 可以使控制台显示对象不会出现乱码

@Configuration
		public class RedisConfig {

			//编写自己的配置
			@Bean
			@SuppressWarnings("all")
			public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory Factory){
				//为了开发方便,一般直接使用<String,Object>
				RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
				template.setConnectionFactory(Factory);

				//json序列化配置
				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);
				//String序列化
				StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

				//key采用String的序列化
				template.setKeySerializer(stringRedisSerializer);
				//hash的key也采用String的序列化
				template.setHashKeySerializer(stringRedisSerializer);
				//value的序列化方式采用jackson
				template.setValueSerializer(jackson2JsonRedisSerializer);
				//hash的序列化方式也采用jackson
				template.setHashValueSerializer(jackson2JsonRedisSerializer);
				template.afterPropertiesSet();

				return template;
			}
		}

Redis.config详解

启动的时候就是通过配置文件来启动的

  1. ​ 单位 配置文件 unit单位 对大小写不敏感

  2. ​ 包含 include /path/to/local.conf

    ​ 就好比spring、improt、include

  3. ​ 网络配置

    ​ bind 127.0.0.1 绑定的ip

    ​ protected-mode yes 是否是保护模式

    ​ port 6379 端口设置

  4. ​ 通用配置

    ​ daemonize yes 是否以守护进程开启 默认是no 就是是否能后台运行

    ​ pidfile /var/run/redis_6379.pid 配置文件的pid文件 如果以后台方式运行,就需要指定一个pid进程文件

    ​ 日志

    ​ loglevel notice

    ​ logfile "" 配置日志文件 日志的文件位置名

    ​ databases 16 数据库的数量 默认是16个数据库

    ​ always-show-logo yes 是否显示logo

  5. ​ 快照

    ​ 持久化,在规定的时间内执行了多少次则会持久化到文件 .rdb .aof

    ​ redis是内存数据库,没有持久化那么数据断电即失

    ​ save 900 1 如果900s内,如果至少有1个key进行了修改,就进行持久化操作

    ​ save 300 10 如果300s内,如果至少有10个key进行了修改,就进行持久化操作

    ​ save 60 10000 如果60s内,如果至少有10000个key进行了修改,就进行持久化操作

    ​ 可以自己设置这个

    ​ stop-writes-on-bgsave-error yes 如果持久化出现了错误,是否继续进行工作

    ​ rdbcompression yes 是否压缩rdb文件 需要消耗cpu的资源

    ​ rdbchecksum yes 保存rdb的文件的时候,进行错误的检查校验

    ​ dir ./ rdb文件的保存目录

  6. ​ REPLICATION 复制

  7. ​ SECURITY 安全 可以设置密码

    ​ requirepass xxx

  8. ​ CLIENTS 限制

    ​ maxclients 10000 设置能连接上redis的最大客户端连接数量

    ​ maxmemory redis最大的内存容量

    ​ maxmemory-policy noeviction 内存到达上限之后的处理策略

    ​ volatile-lru: 只对设置了过期时间的key进行LRU

    ​ volatile-ttl: 删除即将过期的

    ​ volatile-random: 随机删除即将过期的key

    ​ allkeys-lru: 删除lru算法的key

    ​ allkeys-random: 随机删除

    ​ no-enviction(驱逐):永不过期,返回错误

  9. ​ APPEND ONLY模式 aof配置

    ​ appendonly no 默认是不开启aof模式的,默认使用rdb方式持久化的

    ​ 在所有的情况下,rdb完全够用了

    ​ appendfilename "appendonly.aof" 持久化的文件的名字

    ​ appendfsync always 每次修改都会同步,消耗性能

    ​ appendfsync everysec 每秒执行一次同步 可能会丢失这一秒的数据

    ​ appendfsync no 不执行同步,这个时候操作系统自己同步数据,速度最快

后端
linux
springboot

评论