zoukankan      html  css  js  c++  java
  • [redis] windwos下安装和使用redis

    一篇很好的入门学习文章:Redis学习

    Redis是一种nosql数据库,在开发中常用做缓存。

    1、下载地址:

      低版本下载地址:https://github.com/dmajkic/redis/downloads

      高版本下载地址:https://github.com/MSOpenTech/redis/releases

      还可以下载 RedisStudio.exe来连接redis和查看redis数据。

    2、把内容解压到到需要安装的目录下,比如:D: edis2.4.5

    3、运行cmd窗口 切换到D: edis2.4.5目录下

    4、启动redis服务:运行 redis-server.exe redis.conf

      redis.conf 是redis服务器的配置文件

    D: edis2.4.5>redis-server.exe redis.conf
    [6540] 02 Nov 16:44:23 * Server started, Redis version 2.4.5
    [6540] 02 Nov 16:44:23 # Open data file dump.rdb: No such file or directory
    [6540] 02 Nov 16:44:23 * The server is now ready to accept connections on port
    [6540] 02 Nov 16:44:24 - 0 clients connected (0 slaves), 1179896 bytes in use
    [6540] 02 Nov 16:44:29 - 0 clients connected (0 slaves), 1179896 bytes in use
    [6540] 02 Nov 16:44:34 - 0 clients connected (0 slaves), 1179896 bytes in use

    出现以上信息说明Redis服务端已经安装成功

    5、 操作redis
    重新打开一个cmd窗口,切换到D: edis2.4.5目录下
    运行 redis-cli.exe -h 127.0.0.1 -p 6379
    其中 127.0.0.1是本地ip,6379是redis服务端的默认端口。

    D: edis2.4.5>redis-cli.exe -h 127.0.0.1 -p 33840
    redis 127.0.0.1:6379>

    出现以上信息说明已经连接上redius服务器
    Redis windows环境下搭建已经完成

    6、测试

    #定义test值为yeqing
    redis 127.0.0.1:6379> set test "yeqing"
    OK

    redis 127.0.0.1:6379> get test
    "yeqing"

    #修改test值为test
    redis 127.0.0.1:6379> set test "test"
    OK

    redis 127.0.0.1:6379> get test
    "test"

    7、java中使用redis来存储session

    搭配:redis2.8以上版本(兼容spring-session-.0.1) + jedis-2.7.0.jar + spring-data-redis-1.5.0.jar + spring-session-1.0.1.jar

    Jedis是Redis在java中的redis - client

    注意:千万不要使用jedis-2.7.2  来搭配 ,版本太高会报空指针错误

    spring-data-redis是1.5的版本,jedis是2.7.2的版本,jedis版本太高错误在这:

    A. 在 spring-data-redis的JedisConnectionFactory 中

    SEND_COMMAND = ReflectionUtils.findMethod(
      Connection.class,
      "sendCommand",
      new Class[] { Command.class, byte[][].class }
    );
    ReflectionUtils.makeAccessible(SEND_COMMAND);

    B. 版本差异

    redis 2.7.0 的connection类 :
    
    protected Connection sendCommand(final Command cmd, final byte[]... args)
    
    而2.7.2版本以变:
    
    protected Connection sendCommand(final ProtocolCommand cmd, final byte[]... args)
    
    解析:
    由于2.7.2版本中使用
    ProtocolCommand 而不是 Command
    所以SEND_COMMAND 的值为null

    然后执行
    ReflectionUtils.makeAccessible(SEND_COMMAND);
    当然是报出空指针啦

    C. 报错如下

     图片描述

    下面展开存储session的正确姿势

    1) web.xml

        
      <!-- 将这个filter配置在任何filter之前 -->
      <filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSessionRepositoryFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

    2) 新建 applicationContext-session.xml 并 import 到spring配置中,编写内容如下:

    <import resource="classpath*:applicationContext-session.xml" />


    <?
    xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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-4.0.xsd"> <!-- 1、对象池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxTotal}"/><!-- 控制一个pool可分配多少个jedis实例 --> <property name="maxIdle" value="${redis.pool.maxIdle}" /><!-- 控制一个pool最多有多少个状态为空闲的jedis实例 --> <property name="minIdle" value="${redis.pool.minIdle}"/> <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" /> <!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException --> <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /> <!-- 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的 --> <property name="testOnReturn" value="${redis.pool.testOnReturn}"/> <property name="testWhileIdle" value="${redis.pool.testWhileIdle}"/> </bean> <!-- 2、工厂实现 --> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy"> <property name="hostName" value="${redis.ip}" /> <property name="port" value="${redis.port}" /> <property name="timeout" value="${redis.timeout}" /> <property name="database" value="${redis.database}" /> <property name="usePool" value="${redis.usePool}" /> <property name="poolConfig" ref="jedisPoolConfig" /> </bean> <!-- 3、操作模板类 --> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"/> </bean>
      <!-- 4、 将session放入redis--> <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> <property name="maxInactiveIntervalInSeconds" value="${session.maxInactiveIntervalInSeconds}" /> </bean> </beans>

    3) 新建 redis.properties,写入如下内容:

    <value>classpath*:redis.properties</value>

    ##redis basic config redis.pool.maxTotal=1024 redis.pool.maxIdle=200 redis.pool.minIdle=1 redis.pool.maxWaitMillis=10000 redis.pool.testOnBorrow=true redis.pool.testOnReturn=true redis.pool.testWhileIdle=true redis.usePool=true redis.timeout=15000 redis.database=0 #single pool server redis.ip=127.0.0.1 redis.port=6379 # session invalidate time session.maxInactiveIntervalInSeconds = 1800
  • 相关阅读:
    iOS-Block的多种使用
    iOS-验证码倒计时60秒
    iOS-AFNetworking-上传图片
    Xcode 报错信息
    iOS-定时器
    iOS-开发技巧-页面布局
    iOS-nil,Nil,NULL的区别
    iOS-Debug
    iOS-NSDate
    iOS-生命周期
  • 原文地址:https://www.cnblogs.com/avivaye/p/4933257.html
Copyright © 2011-2022 走看看