学习redis过程中遇到的问题

redis缓存和MySQL中数据不一致问题

redis缓存点击量,每隔一段时间把点击量写到MySQL中去

博客详情读取redis缓存中的内容。但是在此过程中,修改了MySQL中的内容

阅读量较大的情况下,一次次请求缓存中的内容,导致缓存一直存在,没有删除。每次读取的是缓存内容,而不是数据库内容。但是在此时数据库中的内容又被修改。此时要如何保证数据一致。(一修改就马上更新缓存)

Redis 缓存和数据库之间的数据校验该怎么做?

如何判断redis是否已经连接

在开启redis数据库的情况下,进行缓存读取和存储。但是关闭redis服务器后,运行会报错。(已经解决,try catch就可以判断)

MySQL连表查询

集合

在项目启动时就加入缓存权限关系

加一个类

package com.xiaokong.usercenter.common;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;

import com.xiaokong.usercenter.platform.domain.PlatformRoleRightRelation;
import com.xiaokong.usercenter.platform.service.RoleRightService;

@Component
public class ApplicationStartup implements ApplicationListener<ApplicationReadyEvent> {

	/**
	 * This event is executed as late as conceivably possible to indicate that the
	 * application is ready to service requests.
	 */
	@Autowired
	RedisTemplate<String, String> redisTemplate;

	@Autowired
	private RoleRightService roleRightService;
	
	@Override
	public void onApplicationEvent(final ApplicationReadyEvent event) {
        //your code
		ValueOperations<String, String> operations = redisTemplate.opsForValue();

		List<PlatformRoleRightRelation> list = roleRightService.roleRightRelationsList();
		for (PlatformRoleRightRelation relation : list) {
			int roleId = relation.getRoleId();
			int rightId = relation.getRightId();
			String key = "user_center" + "-" + roleId + "-" + rightId;
			System.out.println(key);
			operations.set(key, "true");
		}
		return;
	}

}

参考链接