Redis实例

public class RedisHelper implements NoSqlInterface{
private static JedisPool pool;
private static RedisHelper instance;

private RedisHelper(){
}

public synchronized static RedisHelper getInstance(){
if(instance == null){
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(PropertyUtils.getIntVal("redis.max_active"));
config.setMaxIdle(PropertyUtils.getIntVal("redis.max_idle"));
config.setMaxWait(PropertyUtils.getIntVal("redis.max_wait"));
pool = new JedisPool(config,PropertyUtils.getStringVal("redis.host.ip"),PropertyUtils.getIntVal("redis.host.port"));
instance = new RedisHelper();
}
return instance;
}

/**
* 获取Jedis对象
* @return
*/
private static Jedis getJedis(){
return pool.getResource();
}

/**
* 添加value为Stirng的数据
* @param key
* @param value
*/
public void setStringVal(String key,String value){
Jedis jedis = getJedis();
jedis.set(key, value);
pool.returnResource(jedis);
}

/**
* 添加value为Stirng的数据
* @param key
* @param value
*/
public void setStringVal(String key,String value,Long seconds){
Jedis jedis = getJedis();
jedis.set(key, value);
jedis.expire(key,seconds.intValue());
pool.returnResource(jedis);
}

/**
* 根据key获取剩余过期时间
* @param key
* @return
*/
public Long getSurplusExpire(String key){
Jedis jedis = getJedis();
return jedis.ttl(key);
}

/**
* 根据key获取String value
* @param key
* @return
*/
public String getStringVal(String key){
Jedis jedis = getJedis();
String value = jedis.get(key);
pool.returnResource(jedis);
return value;
}

/**
* 移除key对应的value
* @param key
*/
public void remove(String key){
Jedis jedis = getJedis();
jedis.del(key);
pool.returnResource(jedis);
}

/**
* 清空所有的key
*/
public void removeAll(){
Jedis jedis = getJedis();
jedis.flushAll();
pool.returnResource(jedis);
}

/**
* 存储java bean对象
* @param key
* @param obj
*/
public void setObjectVal(String key,Object obj){
try {
Jedis jedis = getJedis();
jedis.set(key.getBytes(), SerializeUtil.serializeObj(obj));
pool.returnResource(jedis);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 获取java bean
* @param key
* @return
*/
public Object getObjectVal(String key){
Jedis jedis = getJedis();
try {
return SerializeUtil.unSerializeObj(jedis.get(key.getBytes()));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
pool.returnResource(jedis);
}
return null;
}

public static void main(String[] args) throws InterruptedException {
// Person p = new Person(14,"张三");
// p.setAddr(new Address(10086,"江苏扬州"));
// setObjectVal("zs",p);

//
// Person pp = (Person)getInstance().getObjectVal("zs");
// System.out.println(pp.getId()+":"+pp.getName());
// System.out.println(pp.getAddr().getId()+":"+pp.getAddr().getAddress());

getInstance().setStringVal("nihao", "abc",120L);
new Thread().sleep(1000*5);
System.out.println(getInstance().getJedis().ttl("nihao"));

System.out.println(getInstance().getStringVal("nihao"));
}
}

时间: 2024-11-06 10:02:11

Redis实例的相关文章

使用Redis分区将数据分割到多个Redis实例

分区是将所有的数据分割到多个Redis实例的过程,所以每个Redis实例存放的是所有键值的子集. Redis分区主要有两个目标:1)允许使用多台计算机的内存来存放更大的数据.如果不做分区的话,单台计算机的内存又限制. 2)使用多台计算的计算能力和网络带宽. 有许多不同的分区场景, 参考资料: http://redis.io/topics/partitioning

Redis 实例排除步骤

Redis 应用案例 - 在问题中不断成长 原创 2017-02-05 杜亦舒 本文翻译整理自 Andy Grunwald 发布的一篇文章,写的是作者所在公司使用 Redis 时遇到的问题,以及处理过程,在不断解决调整中积累了很多 Redis 的使用经验 背景 产品类型:酒店搜索 技术选型:前端 PHP + 后端 Java,都会用到 Redis Redis 使用场景:缓存.数据持久化前的临时存储 2010年开始应用 Redis,PHP 对其操作时使用的是 Predis 这个客户端库 2013年改

在一台机器上搭建多个redis实例

默认Redis程序安装在/usr/local/redis目录下: 配置文件:/usr/local/redis/redis.conf,该配置文件中配置的端口为默认端口:6379: Redis的启动命令路径:/usr/local/bin/redis-server. 可以指定端口启动多个Redis进程. #/usr/local/bin/redis-server --port 6380 &    #启动6380端口的redis实例. ====================以下每个进程对应一个配置文件(

redis的使用:获取redis实例的工具类

package com.wanhua.util; import java.util.HashMap;import java.util.Map;import java.util.Set;import java.util.logging.Logger; import play.Play; import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolC

一个Redis实例适合存储不同应用程序的数据吗?

Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中.这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,所以可以将其中的每个字典都理解成一个独立的数据库. 每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过修改redis.co

centos安装redis并开启多个redis实例

1.下载安装包 下载地址 :  http://download.redis.io/releases/,去里面找对应的版本下载 例如  wget http://download.redis.io/releases/redis-5.0.0.tar.gz 2.解压 tar -zxf  redis-5.0.0.tar.gz 3.编译安装 cd redis-5.0.0.tar.gz make && make install 4.修改配置文件 1.将utils下面的redis_init_script复

redis-full-check校验2个不同redis实例数据

redis-full-check校验redis数据是否一致: 校验2个不同的redis实例数据: 6986 为redis实例一6987 为redis实例二 登录6986 redis实例一,模拟设置4个key值 [[email protected] redis-full-check-1.4.7]# redis-cli -h 127.0.0.1 -p 6986 -a 'Y2hJKSGtuEq' Warning: Using a password with '-a' option on the com

php redis实例

test.php <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); ?> =========================== add.php <form method='POST' action='reg.php'> 用户名:<input type='text' name='username'/> 密码:<input type='password' name='pwd'/>

用check_tcp来监控memcached和redis实例

前言:在内网环境监控外网ECS中的内网服务端口,试了几种方法都没成功,最后还是考虑用check_tcp来监控,输出命令信息,监控结果非常详细,很赞!分享给大家,希望对大家有所帮助. 一.check_tcp监控memcached 通过输入 stats 得到参数,输入quit 退出因此可以利用check_tcp 来得到memcached的响应时间.uptime等信息,具体的命令格式如下: /usr/local/nagios/libexec/check_tcp -H 192.168.2.11 -p 1

redis 实例

打redis模块打开官网 http://www.redis.io/  进入clients 找到PHP的选项 然后进入phpredis 这就是redis for php的扩展模块 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613extension="redis.so" 待续...