Redis的简单使用
1.简介
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
换句话说,Redis就像是一个HashMap,不过不是在JVM中运行,而是以一个独立进程的形式运行。
一般说来,会被当作缓存使用。 因为它比数据库(mysql)快,所以常用的数据,可以考虑放在这里,这样就提高了性能。
如上,就是一个简单的键值对数据库,可以更快得查到最近的内容
由此,可以把上一篇的微信小程序中的session_key和openid对应起来,加快使用session查找id的速度
2.开始
下载redis(Linux版),win版在附件
http://download.redis.io/releases/redis-5.0.7.tar.gz
解压后打开服务端程序就可以启动了,还可以配置到环境变量中
再打开客户端进行简单使用
2.把它整合到ssm!
首先我们把它的依赖导入到maven中
<!--redis相关 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.6.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
在applicationContex中配置以下内容
<!--引入redis.properties配置多个以逗号或者/分割-->
<context:property-placeholder location="classpath:redis.properties"/>
<!-- jedis 连接池配置 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}"/>
<property name="maxWaitMillis" value="${redis.maxWait}"/>
<property name="testOnBorrow" value="${redis.testOnBorrow}"/>
</bean>
<!-- redis连接工厂 -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="poolConfig" ref="poolConfig"/>
<property name="port" value="${redis.port}"/>
<property name="hostName" value="${redis.host}"/>
<property name="timeout" value="${redis.timeout}"></property>
</bean>
<!-- Jedis模板配置 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!-- 如果不配置Serializer,那么存储的时候只能使用String,如果用对象类型存储,那么会提示错误 can't cast to String!!!-->
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<!-- 采用json序列化 -->
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
</property>
<!-- 开启REIDS事务支持 -->
<property name="enableTransactionSupport" value="true"/>
</bean>
<!--自定义redis工具类,在需要缓存的地方注入此类 -->
<bean id="redisUtil" class="com.BookKeeping.util.RedisUtil">
<property name="redisTemplate" ref="redisTemplate" />
</bean>
配置文件redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.maxIdle=300
redis.maxWait=-1
redis.testOnBorrow=true
redis.timeout=10000
在工具类中导入redis工具类,方便使用
这里可以参考
https://how2j.cn/k/redis/redis-sping-data-redis/1719.html#nowhere
简单例子(上例子的服务层):读取和写入
@Override
public boolean setTokenToRedis(String token,String openid){
try {
//登录信息写入redis,有效期30分钟
logger.info("开始将Token写入Redis");
redisUtil.set(token, openid, 1800);
}catch (Exception e){
logger.info("Redis错误!请检查");
return false;
}
return true;
}
@Override
public String getOpenId(String token) {
//从redis中找openid
if(redisUtil.get(token)!=null){
return redisUtil.get(token).toString();
}else{
System.out.println("Token失效");
return "TokenError";
}
}