redis 下载安装_y_index的博客-CSDN博客


本站和网页 https://blog.csdn.net/y_index/article/details/78706771 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

redis 下载安装_y_index的博客-CSDN博客
redis 下载安装
y_index
于 2017-12-04 10:04:55 发布
28146
收藏
31
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/y_index/article/details/78706771
版权
Redis 安装
1、Redis的数据类型:
  字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)
2、Redis和memcache相比的独特之处:
  (1)redis可以用来做存储(storge)、而memcache是来做缓存(cache)。这个特点主要是因为其有“持久化”功能
  (2)存储的数据有“结构”,对于memcache来说,存储的数据,只有一种类型——“字符串”,而redis则可以存储字符串、链表、集合、有序集合、哈序结构
3、持久化的两种方式:
  Redis将数据存储于内存中,或被配置为使用虚拟内存。
  实现数据持久化的两种方式:(1)使用截图的方式,将内存中的数据不断写入磁盘(性能高,但可能会引起一定程度的数据丢失)
               (2)使用类似mysql的方式,记录每次更新的日志
4、Redis的主从同步:对提高读取性能非常有益
5、Redis服务端的默认端口是6379
Window 下安装
下载地址:https://github.com/MSOpenTech/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为redis。
打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
设置键值对 set myKey abc
取出键值对 get myKey
Linux 下安装
下载地址:http://redis.io/download,下载最新文档版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
$ cd src
$ ./redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src
$ ./redis-server redis.conf
redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。比如:
$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
Ubuntu 下安装
在 Ubuntu 系统安装 Redi 可以使用以下命令:
$sudo apt-get update
$sudo apt-get install redis-server
启动 Redis
$ redis-server
查看 redis 是否启动?
$ redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:6379>
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
redis 127.0.0.1:6379> ping
PONG
以上说明我们已经成功安装了redis。
Redis 简介
Redis 配置
笔记列表
   chenming
  203***5172@qq.com
  参考地址
Mac 下安装
 1. 官网http://redis.io/ 下载最新的稳定版本,这里是3.2.0
 2. sudo mv 到 /usr/local/
 3. sudo tar -zxf redis-3.2.0.tar 解压文件
 4. 进入解压后的目录 cd redis-3.2.0
 5. sudo make test 测试编译
 6. sudo make install 
chenming
   chenming
  203***5172@qq.com
  参考地址
5个月前 (06-30)
   mengjun
  813***532@qq.com
mac 下安装也可以使用 homebrew,homebrew 是 mac 的包管理器。
1、执行 brew install redis
2、启动 redis,可以使用后台服务启动 brew services start redis。或者直接启动:redis-server /usr/local/etc/redis.conf
Redis的配置
  daemonize:如需要在后台运行,把该项的值改为yes
  pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
  bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
  port:监听端口,默认为6379
  timeout:设置客户端连接时的超时时间,单位为秒
  loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
  logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
  database:设置数据库的个数,默认使用的数据库是0
  save:设置redis进行数据库镜像的频率
  rdbcompression:在进行镜像备份时,是否进行压缩
  dbfilename:镜像备份文件的文件名
  dir:数据库镜像备份的文件放置的路径
  slaveof:设置该数据库为其他数据库的从数据库
  masterauth:当主数据库连接需要密码验证时,在这里设定
  requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
  maxclients:限制同时连接的客户端数量
  maxmemory:设置redis能够使用的最大内存
  appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
  appendfsync:设置appendonly.aof文件进行同步的频率
  vm_enabled:是否开启虚拟内存支持
  vm_swap_file:设置虚拟内存的交换文件的路径
  vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
  vm_page_size:设置虚拟内存页的大小
  vm_pages:设置交换文件的总的page数量
  vm_max_thrrads:设置vm IO同时使用的线程数量
基本操作:
1)连接操作命令    quit:关闭连接(connection)    auth:简单密码认证    help cmd: 查看cmd帮助,例如:help quit        2)持久化    save:将数据同步保存到磁盘    bgsave:将数据异步保存到磁盘    lastsave:返回上次成功将数据保存到磁盘的Unix时戳    shundown:将数据同步保存到磁盘,然后关闭服务        3)远程服务控制    info:提供服务器的信息和统计    monitor:实时转储收到的请求    slaveof:改变复制策略设置    config:在运行时配置Redis服务器        4)对value操作的命令    exists(key):确认一个key是否存在    del(key):删除一个key    type(key):返回值的类型    keys(pattern):返回满足给定pattern的所有key    randomkey:随机返回key空间的一个    keyrename(oldname, newname):重命名key    dbsize:返回当前数据库中key的数目    expire:设定一个key的活动时间(s)    ttl:获得一个key的活动时间    select(index):按索引查询    move(key, dbindex):移动当前数据库中的key到dbindex数据库    flushdb:删除当前选择数据库中的所有key    flushall:删除所有数据库中的所有key        5)String    set(key, value):给数据库中名称为key的string赋予值value    get(key):返回数据库中名称为key的string的value    getset(key, value):给名称为key的string赋予上一次的value    mget(key1, key2,…, key N):返回库中多个string的value    setnx(key, value):添加string,名称为key,值为value    setex(key, time, value):向库中添加string,设定过期时间time    mset(key N, value N):批量设置多个string的值    msetnx(key N, value N):如果所有名称为key i的string都不存在    incr(key):名称为key的string增1操作    incrby(key, integer):名称为key的string增加integer    decr(key):名称为key的string减1操作    decrby(key, integer):名称为key的string减少integer    append(key, value):名称为key的string的值附加value    substr(key, start, end):返回名称为key的string的value的子串        6)List     rpush(key, value):在名称为key的list尾添加一个值为value的元素    lpush(key, value):在名称为key的list头添加一个值为value的 元素    llen(key):返回名称为key的list的长度    lrange(key, start, end):返回名称为key的list中start至end之间的元素    ltrim(key, start, end):截取名称为key的list    lindex(key, index):返回名称为key的list中index位置的元素    lset(key, index, value):给名称为key的list中index位置的元素赋值    lrem(key, count, value):删除count个key的list中值为value的元素    lpop(key):返回并删除名称为key的list中的首元素    rpop(key):返回并删除名称为key的list中的尾元素    blpop(key1, key2,… key N, timeout):lpop命令的block版本。    brpop(key1, key2,… key N, timeout):rpop的block版本。    rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,
              并将该元素添加到名称为dstkey的list的头部        7)Set    sadd(key, member):向名称为key的set中添加元素member    srem(key, member) :删除名称为key的set中的元素member    spop(key) :随机返回并删除名称为key的set中一个元素    smove(srckey, dstkey, member) :移到集合元素    scard(key) :返回名称为key的set的基数    sismember(key, member) :member是否是名称为key的set的元素    sinter(key1, key2,…key N) :求交集    sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合    sunion(key1, (keys)) :求并集    sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合    sdiff(key1, (keys)) :求差集    sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合    smembers(key) :返回名称为key的set的所有元素    srandmember(key) :随机返回名称为key的set的一个元素        8)Hash    hset(key, field, value):向名称为key的hash中添加元素field    hget(key, field):返回名称为key的hash中field对应的value    hmget(key, (fields)):返回名称为key的hash中field i对应的value    hmset(key, (fields)):向名称为key的hash中添加元素field     hincrby(key, field, integer):将名称为key的hash中field的value增加integer    hexists(key, field):名称为key的hash中是否存在键为field的域    hdel(key, field):删除名称为key的hash中键为field的域    hlen(key):返回名称为key的hash中元素个数    hkeys(key):返回名称为key的hash中所有键    hvals(key):返回名称为key的hash中所有键对应的value    hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
//验证密码,如果没有设置密码这段代码省略
jedis.auth("password");
jedis.connect();//连接
jedis.disconnect();//断开连接
Set<String> keys = jedis.keys("*"); //列出所有的key
Set<String> keys = jedis.keys("key"); //查找特定的key
//移除给定的一个或多个key,如果key不存在,则忽略该命令.
jedis.del("key1");
jedis.del("key1","key2","key3","key4","key5");
//移除给定key的生存时间(设置这个key永不过期)
jedis.persist("key1");
//检查给定key是否存在
jedis.exists("key1");
//将key改名为newkey,当key和newkey相同或者key不存在时,返回一个错误
jedis.rename("key1", "key2");
//返回key所储存的值的类型。
//none(key不存在),string(字符串),list(列表),set(集合),zset(有序集),hash(哈希表)
jedis.type("key1");
//设置key生存时间,当key过期时,它会被自动删除。
jedis.expire("key1", 5);//5秒过期
//字符串值value关联到key。
jedis.set("key1", "value1");
//将值value关联到key,并将key的生存时间设为seconds(秒)。
jedis.setex("foo", 5, "haha");
//清空所有的key
jedis.flushAll();
//返回key的个数
jedis.dbSize();
//哈希表key中的域field的值设为value。
jedis.hset("key1", "field1", "field1-value");
jedis.hset("key1", "field2", "field2-value");
Map map = new HashMap();
map.put("field1", "field1-value");
map.put("field2", "field2-value");
jedis.hmset("key1", map);
//返回哈希表key中给定域field的值
jedis.hget("key1", "field1");
//返回哈希表key中给定域field的值(多个)
List list = jedis.hmget("key1","field1","field2");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
//返回哈希表key中所有域和值
Map<String,String> map = jedis.hgetAll("key1");
for(Map.Entry entry: map.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + "\t");
//删除哈希表key中的一个或多个指定域
jedis.hdel("key1", "field1");
jedis.hdel("key1", "field1","field2");
//查看哈希表key中,给定域field是否存在。
jedis.hexists("key1", "field1");
//返回哈希表key中的所有域
jedis.hkeys("key1");
//返回哈希表key中的所有值
jedis.hvals("key1");
//将值value插入到列表key的表头。
jedis.lpush("key1", "value1-0");
jedis.lpush("key1", "value1-1");
jedis.lpush("key1", "value1-2");
//返回列表key中指定区间内的元素,区间以偏移量start和stop指定.
//下标(index)参数start和stop从0开始;
//负数下标代表从后开始(-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推)
List list = jedis.lrange("key1", 0, -1);//stop下标也在取值范围内(闭区间)
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
//返回列表key的长度。
jedis.llen("key1")
//将member元素加入到集合key当中。
jedis.sadd("key1", "value0");
jedis.sadd("key1", "value1");
//移除集合中的member元素。
jedis.srem("key1", "value1");
//返回集合key中的所有成员。
Set set = jedis.smembers("key1");
//判断元素是否是集合key的成员
jedis.sismember("key1", "value2"));
//返回集合key的元素的数量
jedis.scard("key1");
//返回一个集合的全部成员,该集合是所有给定集合的交集
jedis.sinter("key1","key2")
//返回一个集合的全部成员,该集合是所有给定集合的并集
jedis.sunion("key1","key2")
//返回一个集合的全部成员,该集合是所有给定集合的差集
jedis.sdiff("key1","key2");
   当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象转换成一个字节序列,可以。 把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象。甚至可以将该字节序列放到其他计算机上或者通过网络传输到其他计算机上恢复,只要该计 算机平台存在相应的类就可以正常恢复为原来的对象。 实现:要序列化一个对象,先要创建某些OutputStream对象,然后将其封装在一个ObjectOutputStream对象内,再调用writeObject()方法即可序列化一个对象;反序列化也类似。注意:使用对象流写入到文件是不仅要保证该对象是序列化的,而且该对象的成员对象也必须是序列化的
方法太多为了方便全部序列化成byte来存储,utils如下:
package com.cslo.info.server.service;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import com.alibaba.fastjson.JSON;
import com.cslo.common.beans.CommonConstant;
import com.cslo.common.email.beans.EmailRecip;
@Slf4j
@Data
public class RedisUtil {
private JedisPool pool = null;
/*最大有效期*/
private static final int EXPIRETIME_MONTH = 60 * 60 * 24 * 30;
/**
* 构造函数
* @param hosts
* @param port
*/
public RedisUtil(String hosts, String port) {
int maxIdle = 20;
int maxTotal = 50;
int timeOut = 5000;
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxTotal(maxTotal);
pool = new JedisPool(jedisPoolConfig, hosts, Integer.parseInt(port), timeOut);
/**
* 功能说明: 获取实例
* @return
*/
private Jedis getJedis() {
return pool.getResource();
/**
* 功能说明: 资源释放
* @param jedis
*/
private void returnResource(Jedis jedis) {
if (jedis != null) {
pool.returnResource(jedis);
/**
* 功能说明: 插入json格式数据
* @param key
* @param value
*/
public void putJson(String key, Object value) {
putJson(key, value, EXPIRETIME_MONTH);
/**
* 功能说明: 存放二进制序列化的对象
* @param key
* @param value
* @param expire
*/
public void putObj(String key, Object value, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.set(key.getBytes(), serialize(value));
jedis.expire(key, expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 获取对象
* @param key
* @return
*/
@SuppressWarnings("unchecked")
public <T> T getObj(String key) {
Jedis jedis = null;
T data = null;
try {
jedis = getJedis();
data = (T) unserialize(jedis.get(key.getBytes()));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 功能说明: 删除对象
* @param key
* @return
*/
public Object delObj(String key) {
Jedis jedis = null;
Object data = null;
try {
jedis = getJedis();
jedis.del(key.getBytes());
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 功能说明: 插入json格式数据
* @param key
* @param value
* @param expire
*/
public void putJson(String key, Object value, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.set(key, JSON.toJSONString(value));
jedis.expire(key, expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 获取对象
* @param key
* @return
*/
public String getJson(String key) {
Jedis jedis = null;
try {
jedis = getJedis();
return jedis.get(key);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return null;
public <T> T getJson(String key, Class<T> clazz) {
String result = getJson(key);
if (result != null) {
return JSON.parseObject(result, clazz);
return null;
/**
* 功能说明: 插入数据
* @param key
* @param value
*/
public void put(String key, Serializable value) {
put(key, value, EXPIRETIME_MONTH);
/**
* 功能说明: 插入数据,指定过期时间
* @param key
* @param value
* @param expire 过期时间
*/
public void put(String key, Serializable value, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
byte[] keyb = serialize(key);
jedis.set(keyb, serialize(value));
jedis.expire(keyb, expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 获取对象
* @param key
* @return
*/
public Object get(String key) {
Jedis jedis = null;
Object data = null;
try {
jedis = getJedis();
data = unserialize(jedis.get(serialize(key)));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 功能说明: 获取key的剩余生存时间
* @param key
* @return
*/
public Long getExpireTime(Serializable key) {
Jedis jedis = null;
Long time = 0l;
try {
jedis = getJedis();
time = jedis.ttl(serialize(key));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return time;
/**
* 功能说明: 判断key是否存在
* @param key
* @return
*/
public boolean existKey(Serializable key) {
Jedis jedis = null;
boolean flag = true;
try {
jedis = getJedis();
flag = jedis.exists(serialize(key));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return flag;
/**
* 功能说明: 设置超时时间
* @param key
* @param expire
*/
public void expireKey(Serializable key, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.expire(serialize(key), expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 删除对象
* @param key
* @return
*/
public Object del(Serializable key) {
Jedis jedis = null;
Object data = null;
try {
jedis = getJedis();
jedis.del(serialize(key));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 序列化
* @param object
* @return
*/
private byte[] serialize(Object object) {
ObjectOutputStream obi = null;
ByteArrayOutputStream bai = null;
try {
bai = new ByteArrayOutputStream();
obi = new ObjectOutputStream(bai);
obi.writeObject(object);
byte[] byt = bai.toByteArray();
return byt;
} catch (IOException e) {
e.printStackTrace();
return null;
/**
* 反序列化
* @param bytes
* @return
*/
private Object unserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
try {
// 反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
return null;
public static void main(String[] args) throws InterruptedException {
String hosts = "127.0.0.1";
String port = "6379";
RedisUtil rm = new RedisUtil(hosts, port);
/* rm.existKey("fsdgfgsdghfds");
System.out.println("-----" + rm.getExpireTime("fsdgfgsdghfds"));
System.out.println("-----" + rm.get("fsdgfgsdghfds"));*/
/* List<EmailRecip> list = new ArrayList<EmailRecip>();
EmailRecip vo = new EmailRecip();
vo.setAdressType("test");
vo.setEmailAdress("66666");
list.add(vo);
rm.putObj("rrrr", list, 100);
List<EmailRecip> o = (List<EmailRecip>)rm.getObj("obj");
System.out.println(o.get(0).getAdressType());*/
/* String key = "rrteerqw2222";
rm.put(key, "123456");
System.out.println(rm.get(key));
System.out.println("当前剩余时间-----"+rm.getExpireTime(key));*/
/* Thread.sleep(5000);
System.out.println("sleep后剩余时间-----"+rm.getExpireTime(key));
rm.put(key, "123456");
System.out.println("重置后剩余时间-----"+rm.getExpireTime(key));*/
redisUtil:采用序列化
package com.cslo.common.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import com.alibaba.fastjson.JSON;
import com.cslo.common.beans.CommonConstant;
/**
* Copyright (c) 2017, 中体彩运营管理公司
* All rights reserved.
* 文件名称: RedisUtil.java
* 作 者: songcs 2017年10月17日
* 创建时间: 2017年10月17日
* 功能说明: redis操作类
*/
@Slf4j
@Data
public class RedisUtil {
private JedisPool pool = null;
/*最大有效期*/
private static final int EXPIRETIME_MONTH = 60 * 60 * 24 * 30;
/**
* 构造函数
* @param hosts
* @param port
*/
public RedisUtil(String hosts, String port) {
int maxIdle = CommonConstant.REDIS_MAXIDLE;
int maxTotal = CommonConstant.REDIS_MAXTOTAL;
int timeOut = CommonConstant.REDIS_TIMEOUT;
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxTotal(maxTotal);
pool = new JedisPool(jedisPoolConfig, hosts, Integer.parseInt(port), timeOut);
/**
* 功能说明: 获取实例
* @return
*/
private Jedis getJedis() {
return pool.getResource();
/**
* 功能说明: 资源释放
* @param jedis
*/
private void returnResource(Jedis jedis) {
if (jedis != null) {
pool.returnResource(jedis);
/**
* 功能说明: 插入json格式数据
* @param key
* @param value
*/
public void putJson(String key, Object value) {
putJson(key, value, EXPIRETIME_MONTH);
/**
* 功能说明: 存放二进制序列化的对象
* @param key
* @param value
* @param expire
*/
public void putObj(String key, Object value, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.set(key.getBytes(), serialize(value));
jedis.expire(key, expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 获取对象
* @param key
* @return
*/
@SuppressWarnings("unchecked")
public <T> T getObj(String key) {
Jedis jedis = null;
T data = null;
try {
jedis = getJedis();
data = (T) unserialize(jedis.get(key.getBytes()));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 功能说明: 删除对象
* @param key
* @return
*/
public Object delObj(String key) {
Jedis jedis = null;
Object data = null;
try {
jedis = getJedis();
jedis.del(key.getBytes());
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 功能说明: 插入json格式数据
* @param key
* @param value
* @param expire
*/
public void putJson(String key, Object value, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.set(key, JSON.toJSONString(value));
jedis.expire(key, expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 获取对象
* @param key
* @return
*/
public String getJson(String key) {
Jedis jedis = null;
try {
jedis = getJedis();
return jedis.get(key);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return null;
public <T> T getJson(String key, Class<T> clazz) {
String result = getJson(key);
if (result != null) {
return JSON.parseObject(result, clazz);
return null;
/**
* 功能说明: 插入数据
* @param key
* @param value
*/
public void put(String key, Serializable value) {
put(key, value, EXPIRETIME_MONTH);
/**
* 功能说明: 插入数据,指定过期时间
* @param key
* @param value
* @param expire 过期时间
*/
public void put(String key, Serializable value, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
byte[] keyb = serialize(key);
jedis.set(keyb, serialize(value));
jedis.expire(keyb, expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 获取对象
* @param key
* @return
*/
public Object get(String key) {
Jedis jedis = null;
Object data = null;
try {
jedis = getJedis();
data = unserialize(jedis.get(serialize(key)));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 功能说明: 获取key的剩余生存时间
* @param key
* @return
*/
public Long getExpireTime(Serializable key) {
Jedis jedis = null;
Long time = 0l;
try {
jedis = getJedis();
time = jedis.ttl(serialize(key));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return time;
/**
* 功能说明: 判断key是否存在
* @param key
* @return
*/
public boolean existKey(Serializable key) {
Jedis jedis = null;
boolean flag = true;
try {
jedis = getJedis();
flag = jedis.exists(serialize(key));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return flag;
/**
* 功能说明: 设置超时时间
* @param key
* @param expire
*/
public void expireKey(Serializable key, int expire) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.expire(serialize(key), expire);
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
/**
* 功能说明: 删除对象
* @param key
* @return
*/
public Object del(Serializable key) {
Jedis jedis = null;
Object data = null;
try {
jedis = getJedis();
jedis.del(serialize(key));
} catch (Exception e) {
log.error("Redis操作失败{}", e);
} finally {
returnResource(jedis);
return data;
/**
* 序列化
* @param object
* @return
*/
private byte[] serialize(Object object) {
ObjectOutputStream obi = null;
ByteArrayOutputStream bai = null;
try {
bai = new ByteArrayOutputStream();
obi = new ObjectOutputStream(bai);
obi.writeObject(object);
byte[] byt = bai.toByteArray();
return byt;
} catch (IOException e) {
e.printStackTrace();
return null;
/**
* 反序列化
* @param bytes
* @return
*/
private Object unserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
try {
// 反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
return null;
public static void main(String[] args) throws InterruptedException {
String hosts = "192.168.8.157";
String port = "6379";
RedisUtil rm = new RedisUtil(hosts, port);
/* rm.existKey("fsdgfgsdghfds");
System.out.println("-----" + rm.getExpireTime("fsdgfgsdghfds"));
System.out.println("-----" + rm.get("fsdgfgsdghfds"));*/
String key = "rrteerqw";
rm.put(key, "123456");
System.out.println(rm.get(key));
System.out.println("当前剩余时间-----"+rm.getExpireTime(key));
/* Thread.sleep(5000);
System.out.println("sleep后剩余时间-----"+rm.getExpireTime(key));
rm.put(key, "123456");
System.out.println("重置后剩余时间-----"+rm.getExpireTime(key));*/
y_index
关注
关注
点赞
31
收藏
打赏
评论
redis 下载安装
Redis 安装1、Redis的数据类型:  字符串、列表(lists)、集合(sets)、有序集合(sorts sets)、哈希表(hashs)2、Redis和memcache相比的独特之处:  (1)redis可以用来做存储(storge)、而memcache是来做缓存(cache)。这个特点主要是因为其有“持久化”功能  (2)存储的数据有“结构”,对于memcache来说,存储的数据,只有...
复制链接
扫一扫
redis下载与安装(windows版)
msn131420的博客
02-13
4万+
1. 下载redis
1、Github下载地址:Releases · microsoftarchive/redis · GitHub
2、百度网盘下载地址:Redis-x64-3.2.100.zip密码:kdfq
2. 解压压缩文件夹
3. 运行redis服务端
第一种:直接双击出现闪现:
就是双击redis-server.exe运行服务即可。
双击.exe无法打开,那我们就在命令行中运行redis.
第二种:
1.打开cmd指令窗口
2.输入你刚才解压的文件路径
3.然...
windows下载redis、windows安装redis、windows启动redis
qq_43874317的博客
11-17
1009
redis下载安装,redis下载安装详细步骤,windows安装redis,redis下载,redis安装,windows安装redis,windows启动redis服务,Redis加入Windows 服务并启动命令步骤
评论 7
您还未登录,请先
登录
后发表或查看评论
Redis download
qq_39560484的博客
04-23
323
Redis Desktop Manager :https://redisdesktop.com/Windows Redis Download :http://www.redis.net.cn/download/https://github.com/MicrosoftArchive/redis/releaseshttps://github.com/MicrosoftArchive/redis
Redis下载安装配置(linux版本)
xiaoyao_zhy的博客
11-01
266
因为Redis默认是linux版本,windows版本是微软那边维护的,这边我们是为了做实验下载Redis,所以暂时先下载linux版本吧。编译成功之后会显示:It's a good idea to run 'make test'2.将下载好的压缩包通过XFTP上传到我们的虚拟机或者服务器(这边使用的是服务器)这边我使用的是华为云,需要将6379端口打开(任何商家的服务器都需要)3)更改protected-mode为no。11.这边展示一下redis的正常界面。1)将下图画红线的注释掉。
Redis版本下载
weixin_45797549的博客
03-16
753
Redis版本下载
https://download.redis.io/releases/
历史下载版本
Redis 下载安装
qq_33753147的博客
10-18
633
Redis 下载安装
Windows、Linux下安装Redis图文教程
生命的意义在于创造和毁灭
06-19
1660
Windows、Linux下安装redis超详细图文教程
redis的下载和安装详解
最新发布
qq_44749491的博客
11-26
1583
一文学会如何在Linux或者docker下安装redis
redis 下载地址,安装,使用
weixin_44371237的博客
01-23
923
redis 官网无法下载window版本的。只有linux版本。
windows版本只有在github下载 https://github.com/microsoftarchive/redis
因为redis 是单线程高性能的。
所以redis需要单线程轮询。
操作系统机制的轮询是不太一样的。
简而言之 linxu轮询用epoll,
window 用selector
但是性能上来说 epoll是高于selector 的。
所以redis推荐使用linux版本。
...
redis从下载到连接这一篇就够了!
weixin_52129381的博客
09-22
154
因为这篇博客主要是给安装连接redis使用,其他的一些数据库数量、持久化策略、集群配置就留到后续涉及到相关配置再进行讲解。直接点击Download即可下载,因为redis是国外的地址,可能会慢一些,也可能下载不成功,多尝试几次就可以了。直接到根目录进行启动,进入到你安装的路径,这里大家如果是按照我上面的安装路径那么可以直接进行启动。如果你的服务器在阿里云或者腾讯云还需要将6379加入到你的安全组中,这个我这里就不在详细演示。我们到/etc下对文件进行修改,这里可以直接到文件下面使用命令去修改。
redis的下载安装
bin——fan的博客
09-03
24
下载
地址:
https://github.com/tporadowski/redis/releases
安装
解压之后即可。
解压之后的几个exe说明:
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).
redis-check-aof.exe:更新日志检查
redis-check-dump.exe:本地数据库检查
redis-cli.exe:客户端
redis-server.exe:服务端 
相关资源
Redis的下载安装
weixin_45965432的博客
10-19
3万+
一、Redis的下载
浏览器搜索框输入 Redis 进行搜索,
选择官网进入,网址:https://redis.io/
进入官网界面如下:
可以看到目前最新版是 6.2.6 版,在 Download it 模块点击 Redis 6.2.6 is the latest stable version 便开始了下载。
下载后是个Linux的压缩文件,
把其传到要安装 Redis 的Linux机上。
二、在Linux上安装
把Redis压缩文件解压到 /opt 目录下
安装 gcc 环境,它是Li
Redis下载和安装
wuzj1314的博客
04-14
4249
1.windows版本
[注意:Redis官方没有windows,只有Linux系统,这个是别人封装对应的]
下载地址:
Releases · microsoftarchive/redis · GitHub
安装版本和解压版本
最好下载安装版本,都给你自动配置好。
安装完成后:
打开测试:
2.Linux系统
虚拟机CentOS7下 ---下载安装
参照官方网站http://www.redis.cn/说明
解压:tar xzf red...
redis各个版本下载地址
web18536560468的博客
08-23
429
redis下载:
Redis入门
weixin_45915206的博客
07-14
58
Redis是一个基于**内存**的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。
Redis 下载安装(Windows版本)
weixin_45822542的博客
12-07
2652
Redis 下载安装
官网下载: http://redis.io/download
官网提供的是linux版本的redis
这里为各位提供windows版本链接,打开会有些慢
https://github.com/MicrosoftArchive/redis/releases
下载好之后解压,我这里版本号不同
使用资料安装包(windows版)
解压到D盘的software目录下
使用对应位数操作系统文件夹下面命令启动redis
redis-server.exe 服务启动程序
redis-cli.
Redis 下载地址
沉在水底的鱼的博客
05-06
240
linux 地址:http://download.redis.io/releases/
windows下Redis的安装和配置--图文教程
热门推荐
好记性不如烂笔头
03-06
6万+
安装和配置Redis
前言:windows没有32位的Redis,所以32位机器的朋友考虑换一下机器。
1、windows环境下的redis需要去github上获取:
https://github.com/MicrosoftArchive/redis/releases
2、直接下载最新版本,选择.msi格式的安装版本(另外一种.zip通过命令安装)
3、直接运行.msi的安装包,一直...
Redis-x64-3.2.100.zip
10-15
启动了redis,但是只要一关闭cmd窗口,redis就会消失。所以要把redis设置成windows下的服务。,这样就不用每次都去手动启动了,以后可以直接使用,脚本如下
redis-serviceinstall .cmd安装成服务脚本(redis设置成windows下的服务,redis-serviceinstall .cmd脚本内容如下)
redis-server --service-install redis.windows-service.conf --loglevel verbose
redis-server --service-start
下载并安装windows版本的Redis
满天星
06-16
121
打开官网:https://redis.io/download
发现官网名没有提供Windows版本,只有Linux版本,费了一番周折,说是GitHub上才有
地址是:https://github.com/MicrosoftArchive/redis/tags
貌似比Linux的版本有点滞后,应该不影响,下载最新版本吧
先download,
下载mis版
这个网站在国外...
idea中lombok的使用以及对象的序列化和反序列化
weixin_45279168的博客
05-28
4337
idea中lombok的使用以及对象的序列化和反序列化
1.首先在idea下载lombok插件
1.1点击file——>Settings——>plugins——>Browse…——>搜索lombok——>install
2.安装完成后重启idea
3.导入maven坐标
org.projectlombok
lombok
1.16.16
4.lombok常用注解
@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
y_index
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
147
原创
4万+
周排名
65万+
总排名
16万+
访问
等级
2943
积分
28
粉丝
48
获赞
16
评论
134
收藏
私信
关注
热门文章
redis 下载安装
28145
如何判断线程是否都结束了
17372
查看数据库连接数
12945
注解@TransactionalEventListener
9173
java中获取各种上下文路径的方法小结
8476
分类专栏
biubiu
15篇
zookeeper
2篇
dubbo
1篇
springcloud
3篇
redis
3篇
springboot
6篇
mysql
3篇
jvm
3篇
es
3篇
Nginx
1篇
多线程
11篇
最新评论
Java中Animal b = new Dog();Dog c = new Dog();的区别
weixin_43674377:
想了解下,即然b不能调用bark()方法,那Animal b=new Animal()效果不是一样的吗?使用new Dog()的意义是什么呢
注解@TransactionalEventListener
WQZ321123:
投递异常就要一直重试,直到成功。不能因为担心后续事件失败而使用同步的策略。
Java对象的序列化和反序列化
bug漩涡:
谢谢,很有用
注解@TransactionalEventListener
popo先生765:
那有没有考虑过消息投递异常呢,异步事件无法反馈异常信息的
redis 下载安装
chy1984:
谢谢分享
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
手写LRU(Least recently used)
布隆过滤器
linux 安装mongodb
2021年2篇
2020年3篇
2019年66篇
2018年51篇
2017年19篇
2016年6篇
目录
目录
分类专栏
biubiu
15篇
zookeeper
2篇
dubbo
1篇
springcloud
3篇
redis
3篇
springboot
6篇
mysql
3篇
jvm
3篇
es
3篇
Nginx
1篇
多线程
11篇
目录
评论 7
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
y_index
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值