windows环境下Redis的应用

Redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis下载地址:https://github.com/MSOpenTech/redis/releases

根据你系统平台的实际情况选择对应的版本,例如:windows环境下可以下载 Redis-x64-xxx.zip版本,解压到 C 盘并重新命名文件夹为 redis即可使用(例如:c:\redis)。

启动服务端 - 打开cmd窗口将路径切换到c:\redis下,输入命令:redis-server.exe redis.windows.conf  启动redis服务端。

如需启动客户端 - 另外打开一个cmd窗口并将路径切换到c:\redis下,输入命令: redis-cli.exe -h 127.0.0.1 -p 6379 则客户端启动,我们可以再客户端通过redis命令使用。

例如:

设置键值对 set firstKey hello

取出键值对 get firstKey

Redis在Java中作为缓存,常见操作共用方法列举:

import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.data.redis.core.RedisTemplate;  
import org.springframework.data.redis.core.StringRedisTemplate;  
import org.springframework.data.redis.core.ValueOperations;  
import org.springframework.stereotype.Component; 

@Component  
public class RedisSentinelUtil { 
    @Autowired  
    //操作字符串的template,StringRedisTemplate是RedisTemplate的一个子集  
    private StringRedisTemplate stringRedisTemplate;  
      
    @Autowired  
    // RedisTemplate,可以进行所有的操作    
    private RedisTemplate<Object,Object> redisTemplate;  
      
    public void setCachesData(byte[] key, Object  value){
       redisTemplate.opsForValue().set(key, value);
    }

    /**
     *  设值并设置失效时间
     * @param key       需保存的key
     * @param value     需保存的值
     * @param timeOut   失效时间
     * @return
     */
    public void setCachesData(byte[] key, Object  value,int timeOut){
        redisTemplate.opsForValue().set(key, SerializaUtil.serialize(value),timeOut,TimeUnit.SECONDS);
    }

    public void setCachesData(String key, String value){
        stringRedisTemplate.opsForValue().set(key, value);  
    }
    
    public boolean setnx(String key, String value){
        return stringRedisTemplate.opsForValue().setIfAbsent(key, value);
    }
    
    public void setCachesData(String key, String value,int timeOut){
         ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue();  
         boolean bExistent = this.stringRedisTemplate.hasKey(key);  
         if (bExistent) {  
             System.out.println("this key is bExistent!");  
         }else{  
             ops.set(key, value, timeOut,TimeUnit.SECONDS);  
         } 
    }

    /**
     *  key是否存在
     * @param key   需验证的key
     * @return      是否
     */
    public Boolean isExistsKey(String key){
        return stringRedisTemplate.hasKey(key); 
    }
    /**
     *  key是否存在
     * @param key   需验证的key
     * @return      是否
     */
    public Boolean isExistsKey(byte[] key){
        return redisTemplate.hasKey(key);
    }

    /**
     * 失效
     *
     * @param key   保存的key
     * @param seconds 秒
     */
    public Boolean setxpireData(String key, int seconds){
        return stringRedisTemplate.expire(key, seconds,TimeUnit.SECONDS);
    }

    /**
     * 失效
     * @param key   保存的key
     * @param seconds 秒
     */
    public Boolean setxpireData(byte[] key, int seconds){
        return redisTemplate.expire(key, seconds,TimeUnit.SECONDS);
    }

    /**
     * 从缓存中获取数据
     * @param key
     * @return
     */
    public String getValue(String key) {
        if (key == null)
            return "";
          String v = stringRedisTemplate.opsForValue().get(key);
          return (v == null) ? "" : v;
    }

    /**
     * 从缓存中获取数据
     * @param key
     * @return
     */
    public String[] getValues(String key) {
             if (key == null)
                return null;
             if(stringRedisTemplate.opsForValue().get(key)!=null){
                  String[] s = stringRedisTemplate.opsForValue().get(key).split(",");
                  if (null!=s && s.length>0)
                      return s;
             }
              return null;
    }

    /**
     * 从缓存中获取数据
     * @param key
     * @return
     */
    public Object getValue(byte[] key) {
        return redisTemplate.opsForValue().get(key);
    }

    /**
     * 从缓存中删除数据
     * @param key
     * @return
     */
    public void removeValue(String key) {
        stringRedisTemplate.delete(key);
    }
    /**
     * 从缓存中删除数据
     * @param key
     * @return
     */
    public void removeValue(byte[] key) {
        redisTemplate.delete(key);
    }

}

 

posted @ 2018-03-24 21:36  墨林2015  阅读(219)  评论(0编辑  收藏  举报