三、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,该命令在后台执行。

 

 

原文地址:https://www.cnblogs.com/Smileing/p/11509128.html