redis安装与使用

linux:

1、下载redis

下载redis:

可以在redis的官网下载 :

http://redis.io/

也可以去谷歌的code下载:

http://code.google.com/p/redis/downloads/list

wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz 

安装:

tar xvzf redis-2.0.4.tar.gz  
cd redis-2.0.4  
./confiugr make

 

windows:

1、猛戳这里就到了开源首页,下载源码包,解压ZIP包后进入msvs\bin\release文件夹有三个文件分别对应32,64位,windows服务三个版本,在这里我们选择64位为例,解压redisbin64.zip 到D:\redis2.4 , 这里主要用到redis-server.exe和redis-cli.exe, redis-server用于运行Redis服务器,redis-cli是命令行客户端,通过它连接Redis服务器,并使用Redis命令进行各种操作.

2、复制源码包根目录下redis.conf到D:\redis2.4,打开CMD命令提示符,输入以下命令启动redis服务

3、启动 

redis-server redis.conf

 

2、配置redis.conf文件

#是否作为守护进程运行
daemonize no
#Redis 默认监听端口
port 6379
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile redis.log
#设置数据库的数量,默认最大是16,默认连接的数据库是0,可以通过select N 来连接不同的数据库
databases 32
#Dump持久化策略
#当有一条Keys 数据被改变是,900 秒刷新到disk 一次
#save 900 1
#当有10 条Keys 数据被改变时,300 秒刷新到disk 一次
save 300 100
#当有1w 条keys 数据被改变时,60 秒刷新到disk 一次
save 6000 10000
#当dump     .rdb 数据库的时候是否压缩数据对象
rdbcompression yes
#dump 持久化数据保存的文件名
dbfilename dump.rdb
###########    Replication #####################
#Redis的主从配置,配置slaveof则实例作为从服务器
#slaveof 192.168.0.105 6379
#主服务器连接密码

  # masterauth <master-password>
############## 安全性 ###########
#设置连接密码

  #requirepass <password>
############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# AOF持久化策略

  #appendfsync always
#appendfsync everysec
#appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启VM 功能
#vm-enabled no
# vm-enabled yes
#vm-swap-file logs/redis.swap
#vm-max-memory 0
#vm-page-size 32
#vm-pages 134217728
#vm-max-threads 4

 

3、客户端连接

redis-cli -h 服务器 –p 端口 –a 密码
redis-cli.exe -h 127.0.0.1 -p 6379

 

4、常用的一些服务器管理命令:

info   #查看服务器信息

  select <dbsize> #选择数据库索引  select 1

  flushall #清空全部数据

  flushdb  #清空当前索引的数据库

  slaveof <服务器> <端口>  #设置为从服务器

  slaveof no one #设置为主服务器

  shutdown  #关闭服务

 

Java连接Redis

1、在多线程下使用Jedis 

在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能.  
创建JedisPool :

package com.zqgame.bl.pool;

import com.zqgame.bl.config.RedisConfig;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisPool {
    
    private static JedisPool jedisPool = null;
    
    public static void initialPool(RedisConfig redisConfig) {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
                       config.setMaxActive("最大存活时间");
            config.setMaxIdle("最大空闲时间");
            config.setMaxWait("等待超时时间");
            config.setTestOnBorrow(redisConfig.isTestOnBorrow());
            
            jedisPool = new JedisPool(config, redisConfig.getHost(), redisConfig.getPort(),redisConfig.getTimeOut());
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
    
//获取连接
public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } }
//释放连接
public static void returnResource(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); } } }

 

2、redis基本操作:

package com.zqgame.bl.pool;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import redis.clients.jedis.Jedis;

/**
 * redis缓存控制类
 * @author zhou
 * 2013-7-18
 */
public class RedisDB {
    
    private Logger log = LoggerFactory.getLogger(RedisDB.class);
    
    private static int REDIS_DB_INDEX = 0;//redis选择数据库 默认16个  0-15
    
    /**
     * 查询 
     * @param userID
     * @return
     */
    public String get(String userID){
        Jedis jedis=null;
        String val=null;
        try {
            jedis = RedisPool.getJedis();
            jedis.select(REDIS_DB_INDEX);
            val=jedis.get(userID);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("RedisDB get error"+e.getMessage(),e);
        }finally{
            if(jedis!=null)
                RedisPool.returnResource(jedis);
        }
        return val;
    }
    
    /**
     * 判断是否存在
     * @param userID
     * @return
     */
    public boolean exist(String userID){
        Jedis jedis=null;
        boolean bool=false;
        try {
            jedis = RedisPool.getJedis();
            jedis.select(REDIS_DB_INDEX);
            bool=jedis.exists(userID);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("RedisDB exist error"+e.getMessage(),e);
        }finally{
            if(jedis!=null)
                RedisPool.returnResource(jedis);
        }
        return bool;
    }
    
    /**
     * 添加缓存
     * @param userID
     * @param map
     */
    public void add(String userID,Map<String,String> m){
        addMap(userID, m);
    }
    
    /**
     * 添加缓存
     * @param userID  用户ID
     * @param val     缓存内容
     */
    public void addMap(String userID,Map<String,String> m){
        Jedis jedis=null;
        try {
            jedis = RedisPool.getJedis();
            jedis.select(REDIS_DB_INDEX);
            //map存入redis  
            jedis.hmset(userID, m);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("RedisDB add error"+e.getMessage(),e);
        }finally{
            if(jedis!=null)
                RedisPool.returnResource(jedis);
        }
    }
    
    public void del(String userID){
        Jedis jedis=null;
        try {
            jedis = RedisPool.getJedis();
            jedis.select(REDIS_DB_INDEX);
            //map存入redis  
            jedis.del(userID);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("RedisDB del error"+e.getMessage(),e);
        }finally{
            if(jedis!=null)
                RedisPool.returnResource(jedis);
        }
    }
    
}

 

一些关于redis学习资料:

java web redis使用(二)

redis作为hibernate的二级缓存

在Java中使用Redis —— Spring Data Redis的简易使用

Redis: 三十分钟从入门到精通 - 第一部分

Redis 客户端Jedis使用(一)

redis学习心得之三-【java操作redis】

Java连接Redis (key-value存储系统)

Redis 安装及配置 (转整理)

Redis 命令参考

posted @ 2014-06-26 15:05  独行码夫  阅读(341)  评论(0编辑  收藏  举报