Redis
<1>Redis的好处:非关系型数据库,数据存到内存中,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化。
<2>使用方式:javaSpring___JedisPool对象
注入对象
@Autowired
private JedisPool jedisPool;
五种数据类型 value
String字符串:
1存:jedisPool.getResource().set(“key”,“value”)
2取:String value=jedisPool.getResource().get(“key”)
Hash哈希:
使用场景jedisPool.getResource().hset(“对象名”,“对象的属性名”,“属性值”)
1存:jedisPool.getResource().hset(“key”,“field”,“value”)
2取:Map<> map=jedisPool.getResource().hgetAll(“key”)
List列表:可重复,存相同类型的数据,key相同
1存:jedisPool.getResource().lpush(“key”,“strings”)
2取:List list=jedisPool.getResource().lrange(“key”)
*Set集合:不可重复,存相同类型的数据,key相同
1存:jedisPool.getResource().sadd(“key”,“members”)
2取:Set set=jedisPool.getResource().smembers(“key”)
Zset(sorted set)其中的成员是唯一的,但分数(score)却可以重复。
1存:jedisPool.getResource().zadd(“key”,“score”,“member”)
2取:Set set=jedisPool.getResource().zrange(“key”,start: 0,end: -1)
<3>业务中的使用
redis.properties
redis.host = 127.0.0.1
redis.port = 6379
redis.timeout = 30000
redis.password=
redis.database=1
spring_redis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:redis.properties"/>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal">
<value>200</value>
</property>
<property name="maxIdle">
<value>50</value>
</property>
<property name="testOnBorrow" value="true"></property>
<property name="testOnReturn" value="true"></property>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="${redis.host}" />
<constructor-arg name="port" value="${redis.port}" type="int" />
<constructor-arg name="timeout" value="${redis.timeout}" type="int" />
<constructor-arg value="#{'${redis.password}'=='' ? null : '${redis.password}'}" />
<constructor-arg type="int" value="${redis.database}" />
</bean>
</beans>
<4>应用
Redis存储两个集合,做差值可以找不同
方法:
Set<String> set=jedisPool.getResource().sdiff("key1","key2")