zoukankan      html  css  js  c++  java
  • 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包后进入msvsin elease文件夹有三个文件分别对应32,64位,windows服务三个版本,在这里我们选择64位为例,解压redisbin64.zip 到D: edis2.4 , 这里主要用到redis-server.exe和redis-cli.exe, redis-server用于运行Redis服务器,redis-cli是命令行客户端,通过它连接Redis服务器,并使用Redis命令进行各种操作.

    2、复制源码包根目录下redis.conf到D: edis2.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 命令参考

  • 相关阅读:
    适配器模式
    注册模式
    工厂模式
    策略模式和注入控制反转
    验签
    php中加密和解密
    asp.net textbox keyup事件触发后台的textchange事件
    jquery $.post 返回json数据
    网页播放音频、视频文件——基于web的html 5的音乐播放器(转载)
    c# 柱状图(转载)
  • 原文地址:https://www.cnblogs.com/quyongjin/p/3810130.html
Copyright © 2011-2022 走看看