zoukankan      html  css  js  c++  java
  • 三、Reids(高性能)key-value服务器知识整合

    一、Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

    知识链接:https://www.runoob.com/redis/redis-backup.html

    http://how2j.cn/k/redis/redis-commands/1369.html

    Redis就像是一个HashMap,不过不是在JVM中运行,而是以一个独立进程的形式运行。
    会被当作缓存使用。 因为它比数据库(mysql)快,所以常用的数据,可以考虑放在这里,这样就提高了性能。

    1.1 Redis 与其他 key - value 缓存产品有以下三个特点:

    1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    3. Redis支持数据的备份,即master-slave模式的数据备份。

    二、本教程讲解如何在Windows上安装Redis
    redis官网:http://redis.io
    windows版本的下载地址是: http://redis.io/download

    2.1 启动客户端:--raw是解决中文乱码问题

    cd D:software
    edis-64.3.0.503
    redis-cli.exe(--raw)

    2.2传值: set lele 18

          get lele 

    三、Redis支持五种数据类型:

    不同的数据类型,有不同的命令方式,接下来根据不同的数据类型对常用命令做一些演示:
    官方手册:
    3.1  string(字符串)
    3.2  hash(哈希)
    3.2    list(列表)
    3.4  set(集合)
    3.5    zset(sorted set:有序集合)
    四、导入Jedis的jar包。用代码操控Redis
    使用各种Redis自带客户端的命令行方式访问Redis服务。 而在实际工作中却需要用到Java代码才能访问,使用第三方jar包 :Jedis就能方便地访问Redis的各种服务了。
    public class TestRedis {
     
        public static void main(String[] args) {
            Jedis jedis = new Jedis("localhost");
            jedis.set("foo", "bar");
            String value = jedis.get("foo");
            System.out.println(value);
        }
         
    }

    五、Spring对Redis的集成

    5.1 这里指定连接 Redis 服务器的相关信息

    #ip地址
    redis.hostName=127.0.0.1
    #端口号
    redis.port=6379
    #如果有密码
    redis.password=
    #客户端超时时间单位是毫秒 默认是2000
    redis.timeout=2000
     
    #最大空闲数
    redis.maxIdle=10
    #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
    redis.maxActive=10
    #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
    redis.maxTotal=10
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
    redis.maxWaitMillis=1000
    #连接的最小空闲时间 默认1800000毫秒(30分钟)
    redis.minEvictableIdleTimeMillis=300000
    #每次释放连接的最大数目,默认3
    redis.numTestsPerEvictionRun=1024
    #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
    redis.timeBetweenEvictionRunsMillis=30000
    #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
    redis.testOnBorrow=false
    #在空闲时检查有效性, 默认false
    redis.testWhileIdle=false

    5.2 配置连接池,连接工厂等,以上都是为了RedisTemplate 服务,这个类就提供常用的访问 Redis的方法。
    然后又把这个 RedisTemplate 类的实例,注入到 RedisUtil 工具类里,方便调用

     <!-- 加载配置文件 -->
        <context:property-placeholder location="classpath:*.properties" />
        <!-- redis连接池配置--> 
        <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" > 
            <!--最大空闲数--> 
            <property name="maxIdle" value="${redis.maxIdle}" /> 
            <!--连接池的最大数据库连接数  -->
            <property name="maxTotal" value="${redis.maxTotal}" />
            <!--最大建立连接等待时间--> 
            <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> 
            <!--逐出连接的最小空闲时间 默认1800000毫秒(30分钟)-->
            <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}" />
            <!--每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3-->
            <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}" />
            <!--逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1-->
            <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}" />
            <!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个--> 
            <property name="testOnBorrow" value="${redis.testOnBorrow}" /> 
            <!--在空闲时检查有效性, 默认false  -->
            <property name="testWhileIdle" value="${redis.testWhileIdle}" /> 
        </bean >
         
        <!--redis连接工厂 -->
        <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
            <property name="poolConfig" ref="jedisPoolConfig"></property>
            <!--IP地址 -->
            <property name="hostName" value="${redis.hostName}"></property>
            <!--端口号  -->
            <property name="port" value="${redis.port}"></property>
            <!--如果Redis设置有密码  -->
            <property name="password" value="${redis.password}" />
            <!--客户端超时时间单位是毫秒  -->
            <property name="timeout" value="${redis.timeout}"></property>
        </bean> 
         
        <!--redis操作模版,使用该对象可以操作redis  -->
        <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
            p:connection-factory-ref="jedisConnectionFactory" > 
            <property name="keySerializer">
                <bean
                    class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="hashKeySerializer">
                <bean
                    class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="valueSerializer">
                <bean
                    class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
            </property>
            <property name="hashValueSerializer">
                <bean
                    class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
            </property>
        </bean > 
         
        <!--自定义redis工具类,在需要缓存的地方注入此类  -->
        <bean id="redisUtil" class="com.how2java.RedisUtil">
            <property name="redisTemplate" ref="redisTemplate" />
        </bean>
         
    </beans>

    5.3RedisUtil 工具类,封装了 RedisTemplate 这个类,以提供更为便利的 对于 Redis 的访问

    六、实际应用

    该命令将在 redis 安装目录中创建dump.rdb文件。
    如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
    CONFIG GET dir
    "dir"
    "/usr/local/redis/bin"以上命令 CONFIG GET dir 输出的 redis 安装目录为 /usr/local/redis/bin。
    创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

     

     

  • 相关阅读:
    Distinct Values
    树状数组求逆序数
    Color the ball
    Cube
    树状数组
    手动编写JQUERY插件
    JQuery和原生JS跨域加载JSON数据或HTML。
    使用CEF(CEFGLUE)作为您的客户端UI(一)
    给IIS添加网站配置权限
    SQL SERVER 报:由于数据移动,未能继续以 NOLOCK 方式扫描错误的解决办法。
  • 原文地址:https://www.cnblogs.com/Smileing/p/11509128.html
Copyright © 2011-2022 走看看