在windows中使用redis

来源:互联网 发布:物业软件 编辑:程序博客网 时间:2024/05/18 00:50

一.Redis简介与安装

1.redis的定义
        redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
        Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1] 
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
        redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)
2.Linux下安装redis
        下载地址:http://redis.io/download  有说明哦~
3.windows 64位下安装
        Redis官方是不支持windows的,但是 Microsoft Open Tech group 在 GitHub上开发了一个Win64的版本,项目地址是:https://github.com/MSOpenTech/redis
        下载地址:https://github.com/MSOpenTech/redis/releases
        (1)下载解压后文件目录结构如下
  1. redis-benchmark.exe         #基准测试  
  2. redis-check-aof.exe         # aof  
  3. redis-check-dump.exe        # dump  
  4. redis-cli.exe               # 客户端  
  5. redis-server.exe            # 服务器  
  6. redis.windows.conf          # 配置文件  
        (2)运行redis-server.exe,就已经开启了服务,运行redis-cli.exe客户端测试一下
        
        下面为客户端,显示信息表示连接上了本机本机的6379端口,可以用set、get测试一下。
        
       这样启动貌似没有加载配置文件,可以新建一个文本,写入
         redis-server  redis.windows.conf 
    然后保存为bat文件来启动。
    (3)修改登录密码
    找到redis.windows.conf文件,搜索requirepass,将前面的#去掉,并在requirepass后面加上需要的密码,重启服务端后生效。

二.redis在java中的使用
1.pom.xml中加入
       
<span style="white-space:pre"></span><dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-redis</artifactId>            <version>1.6.4.RELEASE</version>        </dependency>        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.3.1</version>        </dependency>        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-pool2</artifactId>            <version>2.2</version>        </dependency>



2.spring-mvc.xml文件中加入
   
 <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">        <property name="maxIdle" value="${redis.maxIdle}" />        <property name="maxTotal" value="${redis.maxActive}" />        <property name="maxWaitMillis" value="${redis.maxWait}" />        <property name="testOnBorrow" value="${redis.testOnBorrow}" />        <property name="testOnReturn" value="${redis.testOnReturn}" />    </bean>    <bean class="com.crawler.database.util.ServiceUtil" />    <bean id="connectionFactory"        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"        p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}"        p:pool-config-ref="poolConfig" />    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">        <property name="connectionFactory" ref="connectionFactory" />    </bean>

3.redis.properties文件
redis.host=127.0.0.1redis.port=6379redis.pass=123456redis.testOnBorrow=falseredis.testOnReturn=falseredis.maxWaitMillis=1800000redis.maxActive=600redis.maxWait=1000

4.RedisUtil
package com.crawler.database.util;import java.io.Serializable;import java.util.concurrent.TimeUnit;import org.springframework.dao.DataAccessException;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisCallback;import org.springframework.data.redis.core.RedisTemplate;/** * Redis工具类 *  * @author EggsDevil * */public class RedisUtil {//项目问题没有注入进来@SuppressWarnings("unchecked")private static RedisTemplate<Serializable, Serializable> redisTemplate = (RedisTemplate<Serializable, Serializable>) BeanFactoryProvidor.getBean("redisTemplate");/** * 将数据存入redis中 *  * @param key  * @param value */public static void setRedis(String key, String value) {redisTemplate.execute(new RedisCallback<Object>() {@Overridepublic Object doInRedis(RedisConnection connection) throws DataAccessException {connection.set(redisTemplate.getStringSerializer().serialize(key),redisTemplate.getStringSerializer().serialize(value));return null;}});}/** * 将数据存入redis中并设置存活时间 *  * @param key 存储的key * @param value 存储的值 * @param time key值存活时间 */public static void setRedis(String key, String value,Integer time) {redisTemplate.execute(new RedisCallback<Object>() {@Overridepublic Object doInRedis(RedisConnection connection) throws DataAccessException {connection.set(redisTemplate.getStringSerializer().serialize(key),redisTemplate.getStringSerializer().serialize(value));redisTemplate.expire(key, time, TimeUnit.SECONDS);return null;}});}/** * 根据key将数据删除 * @param key  * @param value */public static void delKey(String key) {redisTemplate.delete(key);}/** * 将数据从redis中取出 * @param key * @return */public static String getRedis(String key) {return redisTemplate.execute(new RedisCallback<String>() {@Overridepublic String doInRedis(RedisConnection connection) throws DataAccessException {byte[] keys = redisTemplate.getStringSerializer().serialize(key);if (connection.exists(keys)) {byte[] value = connection.get(keys);String result = redisTemplate.getStringSerializer().deserialize(value);return result;}return null;}});}}

部分内容参考摘抄自:http://blog.csdn.net/renfufei/article/details/38474435/

简介摘抄自:http://baike.baidu.com/link?url=24lzw8BlWKL2VMDazrDMnMwjGPVxiDnaGincamAv7peboxEN7sUsmWjCB8i73TlfKSC4vT85TSotvW5PMGsQj_



0 0
原创粉丝点击