设为首页 收藏本站
查看: 692|回复: 0

[经验分享] redis jedis

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-12 13:15:46 | 显示全部楼层 |阅读模式
  

  这只是一个学习备忘,
  http://xmong.iyunv.com/blog/1841444
  http://snowolf.iyunv.com/blog/1633196
  http://yychao.iyunv.com/blog/1751583
  等
  需要了解redis,jedis,JedisPool,分布式,ShardedJedis,Pipeline等。。。。
  
  接手一个别人写完的项目,操作redis数据库,首先需要再本地配置redis环境
  
  本来首先肯定是下载安装的,redis官方不支持win,我就选择在虚拟机你们安装。。。。
  但是坑爹是遇到无法链接虚拟机redis的问题,bind也注释掉了,防火墙也停了
  ping能ping通,telnet死活不通
  无计可施了。。。。。
  同事告诉我win7旗舰版是可以的,专业版不行。。。。。。坑爹的win7啊
  官网有一个分支是win下的,但是是代码,需要编译打包才能用
  直接网上找一个打包好的、带exe的吧
  加压直接可以用
  
  安装这一步确实坑大了,耽误了一上午
  
  pom.xml添加jedis的包
  <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.1.0</version></dependency>
  先来一段测试demo
  
public class TestJedis {
//redis服务器主机  
static String host = &quot;127.0.0.1&quot;;  
//端口号  
static int port = 6379;   
public static void main(String[] args) {  
//根据redis主机和端口号实例化Jedis对象  
Jedis jedis = new Jedis(host, port);  
//添加key-value对象,如果key对象存在就覆盖该对象  
jedis.set(&quot;name&quot;, &quot;xmong&quot;);  
//查取key的value值,如果key不存在返回null  
String value = jedis.get(&quot;name&quot;);  
System.out.println(value);  
//删除key-value对象,如果key不存在则忽略此操作  
jedis.del(&quot;name&quot;);  
//判断key是否存在,不存在返回false存在返回true  
jedis.exists(&quot;name&quot;);  
}  
}



  
  池使用


  Commons-pool.jar


  我写demo的里面一起有依赖pool的
  src/main/resources下面建立redis.properties文件


  

#最大分配的对象数
redis.pool.maxActive=1024
#最大能够保持idel状态的对象数
redis.pool.maxIdle=200
#当池内没有返回对象时,最大等待时间
redis.pool.maxWait=1000
#当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
#IP
redis.ip=127.0.0.1
#Port
redis.port=6379


java  

import java.util.ResourceBundle;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* jedis池使用
* @author xmong
*
*/
public class MyJedisPool {
//jedis池
private static JedisPool pool;  
//静态代码初始化池配置
static {
//加载redis配置文件
ResourceBundle bundle = ResourceBundle.getBundle(&quot;redis&quot;);  
if (bundle == null) {  
throw new IllegalArgumentException(&quot;[redis.properties] is not found!&quot;);  
}
//创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
//设置池配置项值
config.setMaxActive(Integer.valueOf(bundle.getString(&quot;redis.pool.maxActive&quot;)));  
config.setMaxIdle(Integer.valueOf(bundle.getString(&quot;redis.pool.maxIdle&quot;)));  
config.setMaxWait(Long.valueOf(bundle.getString(&quot;redis.pool.maxWait&quot;)));  
config.setTestOnBorrow(Boolean.valueOf(bundle.getString(&quot;redis.pool.testOnBorrow&quot;)));  
config.setTestOnReturn(Boolean.valueOf(bundle.getString(&quot;redis.pool.testOnReturn&quot;)));  
//根据配置实例化jedis池
pool = new JedisPool(config, bundle.getString(&quot;redis.ip&quot;),
Integer.valueOf(bundle.getString(&quot;redis.port&quot;)));
}
/**
* 测试jedis池方法
*/
public static void test1(){
//从jedis池中获取一个jedis实例
Jedis jedis = pool.getResource();
//获取jedis实例后可以对redis服务进行一系列的操作
jedis.set(&quot;name&quot;, &quot;xmong&quot;);
System.out.println(jedis.get(&quot;name&quot;));
jedis.del(&quot;name&quot;);
System.out.println(jedis.exists(&quot;name&quot;));
//释放对象池,即获取jedis实例使用后要将对象还回去
pool.returnResource(jedis);
}
public static void main(String[] args) {
test1();//执行test1方法
}

}
  好了
  整合2篇博客的代码
  我i写了自己的Util 1.0版本
  

import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public final class JedisUtil {
private static final Logger LOGGER = Logger.getLogger(JedisUtil.class);
private static int DEFAULT_DB_INDEX = 0;
private static JedisPool jedisPool = null;
private JedisUtil() {
// private constructor
}
private static void initialPool() {
try {
ResourceBundle bundle = ResourceBundle.getBundle(&quot;redis&quot;);
if (bundle == null) {
throw new IllegalArgumentException(
&quot;[redis.properties] is not found!&quot;);
}
// 创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
// 设置池配置项值
String address = bundle.getString(&quot;redis.ip&quot;);
int port = Integer.valueOf(bundle.getString(&quot;redis.port&quot;));
LOGGER.info(&quot;Redis server info: &quot; + address + &quot;:&quot; + port);
String strDbIndex = bundle.getString(&quot;redis.db_index&quot;);
if (strDbIndex != null) {
DEFAULT_DB_INDEX = Integer.valueOf(strDbIndex);
}
String strMaxActive = bundle.getString(&quot;redis.pool.maxActive&quot;);
if (strMaxActive != null) {
config.setMaxActive(Integer.valueOf(strMaxActive));
}
String strMaxIdle = bundle.getString(&quot;redis.pool.maxIdle&quot;);
if (strMaxIdle != null) {
config.setMaxIdle(Integer.valueOf(strMaxIdle));
}
String strMaxWait = bundle.getString(&quot;redis.pool.maxWait&quot;);
if (strMaxWait != null) {
config.setMaxWait(Long.valueOf(strMaxWait));
}
String strTestOnBorrow = bundle
.getString(&quot;redis.pool.testOnBorrow&quot;);
if (strTestOnBorrow != null) {
config.setTestOnBorrow(Boolean.valueOf(strTestOnBorrow));
}
String strTestOnReturn = bundle
.getString(&quot;redis.pool.testOnReturn&quot;);
if (strTestOnReturn != null) {
config.setTestOnReturn(Boolean.valueOf(strTestOnReturn));
}
String strTimeout = bundle.getString(&quot;redis.pool.timeout&quot;);
int timeout = 2000;// 默认2000
if (strTimeout != null) {
timeout = Integer.valueOf(strTimeout);
}
// 根据配置实例化jedis池
jedisPool = new JedisPool(config, address, port, timeout);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
public synchronized static Jedis getJedisInstance() {
if (jedisPool == null) {
initialPool();
}
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
resource.select(DEFAULT_DB_INDEX);
return resource;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public synchronized static Jedis getJedisInstance(final int dbIndex) {
if (jedisPool == null) {
initialPool();
}
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
resource.select(dbIndex);
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);
}
}
}

配置文件  
  

#最大分配的对象数
redis.pool.maxActive=1024
#最大能够保持idel状态的对象数
redis.pool.maxIdle=200
#当池内没有返回对象时,最大等待时间
redis.pool.maxWait=1000
#当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
#当调用超时
redis.pool.timeout=2000
#IP
redis.ip=127.0.0.1
#Port
redis.port=6379
redis.db_index=0

  测试main
  

public static void main(String[] args) {
Jedis jedis = JedisUtil.getJedisInstance();
jedis.set(&quot;name&quot;, &quot;xmong&quot;);
System.out.println(jedis.get(&quot;name&quot;));
jedis.del(&quot;name&quot;);
System.out.println(jedis.exists(&quot;name&quot;));
JedisUtil.returnResource(jedis);
}


  
  
  
  


  


  


  


  


  


  


  


  


  


  


  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-138349-1-1.html 上篇帖子: Redis中sentinel集群的搭建和Jedis测试 图文教程[二] 下篇帖子: MongoDB和Redis区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表