redis入门

2019-06-10  本文已影响0人  骏龙ll

在SqlMapConfig.xml中配置,可以在控制台打印进行了的sql语句
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<settings>
老师教程
https://www.jianshu.com/p/4f3ff7ecdc6b

redis属于NoSql分类,它把数据都是缓存在内存中的,我们都知道内存的读写效率跟硬盘不是一个级别的,最后redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。既然用redis读取效率那么高,最后内容也会添加到磁盘那么我们就当然要使用它了。

下载地址:
https://pan.baidu.com/s/12RTfPWaKVNZRnL-yknCgTA

下载安装Redis

打开Redis服务配置文件。注意:不要找错了,通常为redis.windows-service.conf,而不是redis.windows.conf。

找到含有requirepass字样的地方,追加一行,输入requirepass 12345。这是访问Redis时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码。此处以简单的12345来演示

1.Redis基本操作
redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset–有序集合)和hash(哈希类型)五种数据类型,存储形式均为字符串。
①String类型
存储:set key value
取值:get key
删除:del key
查看所有键:keys *

127.0.0.1:6379> set key1 "nihao"
OK
127.0.0.1:6379> set key2 "haha"
OK
127.0.0.1:6379> keys *
1) "key1"
2) "key2"

增1:incr key
减1:decr key
注意, 虽然redis存储形式都是字符串,但是自增减的时候要求value必须能解析成数值类型,比如你的value是”1ad”那就不行。
示例:先添加键值对 str1 3,再自增就成了4

127.0.0.1:6379> set key3 "3"
OK
127.0.0.1:6379> get key3
"3"
127.0.0.1:6379> incr key3
(integer) 4
127.0.0.1:6379> get key3
"4"

②Hash类型
相当于一个key对于一个map,map中还有key-value
存储:hset key field value
取值:hget key field

127.0.0.1:6379> hset zhangsan age 33
(integer) 1
127.0.0.1:6379> hset zhangsan weight 66
(integer) 1
127.0.0.1:6379> hget zhangsan age
"33"
127.0.0.1:6379> hget zhangsan weight
"66"

查看某个键对应的map里面的所有key:hkeys key
查看某个键对应的map里面的所有的value:hvals key
查看某个键的map:hgetall key

java5:0>hkeys zhangsan
 1)  "age"
 2)  "weight"
java5:0>hvals zhangsan
 1)  "33"
 2)  "66"
java5:0>hgetall zhangsan
 1)  "age"
 2)  "33"
 3)  "weight"
 4)  "66"

③List类型
存储:push,分为lpush list v1 v2 v3 v4 …(左边添加),rpush list v1 v2 v3 v4 …(右边添加)

java5:0>lpush list1 1 2 3 4
"4"

项目中使用redis
引入依赖

    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.9.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-redis</artifactId>
      <version>1.8.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-commons</artifactId>
      <version>1.8.4.RELEASE</version>
    </dependency>

db.properties

redis.host=127.0.0.1
redis.port=6379
redis.password=123456

redis.maxIdle=300
redis.maxWaitMillis=1000
redis.maxTotal=600
redis.testOnBorrow=true
redis.testOnReturn=true

配置文件application-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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--设置连接池-->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="${redis.maxIdle}"/>
        <property name="maxTotal" value="${redis.maxTotal}" />
        <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />
        <property name="testOnReturn" value="${redis.testOnReturn}" />
    </bean>

    <!--设置链接属性-->
    <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName"><value>${redis.host}</value></property>
        <property name="port"><value>${redis.port}</value></property>
        <property name="password"><value>${redis.password}</value></property>
        <property name="poolConfig"><ref bean="poolConfig"></ref></property>
        <property name="timeout"><value>100000</value></property>
    </bean>

    <!-- Jedis模板配置  -->
    <bean id="redisMapper" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="connectionFactory" />
    </bean>

</beans>
@Service
public class UserinfoServiceImpl implements UserinfoService {
    @Autowired
    UserinfoMapper userinfoMapper;
    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    @Transactional
    public int add(Userinfo userinfo) {
        Object user = redisTemplate.opsForValue().get("user");
        int num = 0;
        if(user == null){
            num = userinfoMapper.add(userinfo);
            redisTemplate.opsForValue().set("user",String.valueOf(num));
        }
        return num;
    }
}

给某个key值设定过期时间(单位秒)

expire key5 60

在controller中

1、判断redis中是否有内容,如果redis中没有内容,则去数据库中查,并将数据库中的值存入redis一份
Object object=redisTemplate。opsForValue().get("tatalcount");
if(object!=null){
int total=(int)object;
pageDataUtils.setTotal(total);
}else{
int total=userinfoMapper.getTotalPage(pageUtils);
redisTemplateMapper.opsForvalue().set("totalCount",total);
pageDataUtils.setTotal(total);
}
2、如果做一些增删改,则为了保持数据一致性(redis中数据与数据库中数据一致),则删掉redis中存入的内容

上一篇下一篇

猜你喜欢

热点阅读