美文网首页
redis入门

redis入门

作者: 骏龙ll | 来源:发表于2019-06-10 10:21 被阅读0次

    在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中存入的内容

    相关文章

      网友评论

          本文标题:redis入门

          本文链接:https://www.haomeiwen.com/subject/xdfoxctx.html