redis缓存在项目中的使用

Redis

是啥:非关系型数据库,数据是存在内存中的,相较于关系型数据库()而言读写速度非常快因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化
优势是啥:快,成本低,扩展性大
**缺点:**技术较新,学习成本高;没有SQL语句的支持,没有事务的支持,但是可以控制事务
原理:把数据存储在内存中
**数据存储格式:**键值对
咋用:在java中的使用→JedisPool(注入对象)
Redis可存储五种数据类型:String/Hash/Set/List/Zset(sorted set)
设置存储时间
jedisPool.getResource ().setex (key,56060*24,value);
String:(存字符串)
存:jedisPool.getResource ().set(“key”,“value”) .
取:String value =jedisPool.getResource ().get(“key”)
Hash:(存对象)
存:jedisPool.getResource ().hset(“对象名”,“对象属性名”,“对象属性值”) .
取:Map<> map =jedisPool.getResource ().hgetALL(“对象名”)
Set:(值不可重复:存相同类型的数据,比如图片名/id,key是相同的)
存:jedisPool.getResource ().sadd(“key”,“members”) .
取:Set<> set =jedisPool.getResource ().smembers(“key”)
List:(值可重复:存相同类型的数据,比如图片名/id,key是相同的)
存:jedisPool.getResource ().lpush(“key”,“strings”)
取:List<> list =jedisPool.getResource ().lrange(“key”)
zset的成员是唯一的,但分数(score)却可以重复。
Zset:(有序不可重复)
存:jedisPool.getResource ().zadd(“key”,“score”,"member)
取:Set<> set =jedisPool.getResource ().zrange(“key”,start:0,end:-1)
如果要存对象:需要先把对象转换成json字符串,然后再进行存储
String json = JSON.toJSON ( user).toString ();
jedisPool.getResource ().setex ( telephone, 60 * 60 * 24, json );
redis在业务中的使用
<1>配置redis.properties

redis.host = 127.0.0.1
redis.port = 6379
redis.timeout = 30000
redis.password=
redis.database=1

<2>配置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"></context:property-placeholder>

   <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"/>
   </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>

<3>应用
用redis存储两个set集合,做差值,可以找出不同(清理垃圾数据)
业务回顾:
七牛云上传图片时,把图片名称缓存到redis的一个大集合中
添加数据库时,把图片名称缓存到另外一个redis的集合中
差值方法:Set sdiff = jedisPool.getResource().sdiff(set1,set2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值