windows访问linux上redis缓存服务(备忘)
Jedis依赖包
<!--缓存依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
日志依赖
<!--日志依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<!--利用注释简写logger private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;-->
<version>1.18.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
频繁登录操作中使用缓存服务
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import edu.yanxue.mapper.AccountMapper;
import edu.yanxue.model.Account;
import edu.yanxue.service.AccountService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import javax.servlet.http.HttpSession;
import java.security.AccessControlContext;
import static edu.yanxue.util.RandomValidateCodeUtil.RANDOMCODEKEY;
/**
1. yanxue
2. alan
3. 2019/8/2010:20
4. 用户业务层实现类
*/
@Service
@Slf4j
public class AccountServiceImpl implements AccountService {
private String host="192.168.179.129";//服务器ip
private int post=6379;//redis服务端口
private Jedis jedis=new Jedis(host,post);
@Autowired
private AccountMapper mapper;
/**
* 通过用户名,手机号,邮箱查询用户
* @param str 用户名或手机号或邮箱
* @return
*/
@Override
public Account selectOne(String str) {
//判断缓存中是否存在
String key="account:login";//用户信息键(缓存)
Account account =null;
try {//捕获连接redis时的产生的异常
if (jedis.get(key)==null){//缓存中不存在
account = mapper.selectOne(str);//从数据库中获取用户信息
//存入缓存
jedis.set(key, JSON.toJSONString(account));
}else{
//从缓存中获取用户信息
//fastjson转换json字符串为实体类
JSONObject jsonAccount = JSON.parseObject(jedis.get(key));
account = JSON.toJavaObject(jsonAccount, Account.class);
}
}catch (Exception e){
log.error("连接异常:"+e.getMessage());
account = mapper.selectOne(str);//若产生异常从数据库中获取
}
return account;
}
}
连接服务注意事项(在windows中访问vmware linux redis的方法)
1.开启虚拟机的网络服务
2.在虚拟机terminal中用ifconfig查看虚拟机的ip地址(ipv4)
3.在虚拟机中以root身份编辑 /etc/redis.conf文件,查找 bind 127.0.0.1 (行首无‘#’的那行),然后在127.0.0.1之后增加上一步找到的ip地址
4.以管理员身份关闭centos的防火墙:service iptables stop (该命令重启之后失效)
5.启动redsiserver: redis-server
6.在虚拟机terminal中打开redis-cli, 在redis命令行状态下执行: CONFIG SET protected-mode no
7.重启redis-server.
在Java中访问redis:
Jedis jedis = new Jedis(ip, port); // 修改ip为上述ip地址,port为6379-- 如果没有修改的话)