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

[经验分享] Redis学习例子

[复制链接]

尚未签到

发表于 2016-12-18 09:27:22 | 显示全部楼层 |阅读模式
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class ReTest {
static JedisPool pool = new JedisPool("127.0.0.1", 6379);
static Jedis jedis = pool.getResource();
public static void main(String[] args) {
// 密码验证
//jedis.auth("password");
Person person = new Person("1234", "alan1");
try {
saveObject(Person.class,person,"person");
} catch (Exception e) {
e.printStackTrace();
}
//jedis.hset("person", "id", person.getId());
//jedis.hset("person", "name", person.getName());
}
@SuppressWarnings("all")
static void saveObject(Class clazz,Object obj,String key) throws Exception{
for(Field field:clazz.getDeclaredFields()){
String fieldName = field.getName() ;
Method method = clazz.getDeclaredMethod("get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1), null) ;
jedis.hset(key, fieldName,(String)method.invoke(obj, null));
}
System.out.println("加载完成");
}
}
class Person {
private String id;
private String name;
/**
* @param id
* @param name
*/
Person(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.id + " " + this.name;
}
}



package com.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class TestRedis {
private Jedis jedis;
@Before
public void setup() {
//连接redis服务器,192.168.0.100:6379
jedis = new Jedis("192.168.0.100", 6379);
//权限认证
jedis.auth("admin");  
}
/**
* redis存储字符串
*/
@Test
public void testString() {
//-----添加数据----------  
jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin  
System.out.println(jedis.get("name"));//执行结果:xinxin  
jedis.append("name", " is my lover"); //拼接
System.out.println(jedis.get("name"));
jedis.del("name");  //删除某个键
System.out.println(jedis.get("name"));
//设置多个键值对
jedis.mset("name","liuling","age","23","qq","476777389");
jedis.incr("age"); //进行加1操作
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
}
/**
* redis操作Map
*/
@Test
public void testMap() {
//-----添加数据----------  
Map<String, String> map = new HashMap<String, String>();
map.put("name", "xinxin");
map.put("age", "22");
map.put("qq", "123456");
jedis.hmset("user",map);
//取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List  
//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数  
List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
System.out.println(rsmap);  
//删除map中的某个键值  
jedis.hdel("user","age");
System.out.println(jedis.hmget("user", "age")); //因为删除了,所以返回的是null  
System.out.println(jedis.hlen("user")); //返回key为user的键中存放的值的个数2
System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true  
System.out.println(jedis.hkeys("user"));//返回map对象中的所有key  
System.out.println(jedis.hvals("user"));//返回map对象中的所有value
Iterator<String> iter=jedis.hkeys("user").iterator();  
while (iter.hasNext()){  
String key = iter.next();  
System.out.println(key+":"+jedis.hmget("user",key));  
}  
}
/**
* jedis操作List
*/  
@Test  
public void testList(){  
//开始前,先移除所有的内容  
jedis.del("java framework");  
System.out.println(jedis.lrange("java framework",0,-1));  
//先向key java framework中存放三条数据  
jedis.lpush("java framework","spring");  
jedis.lpush("java framework","struts");  
jedis.lpush("java framework","hibernate");  
//再取出所有数据jedis.lrange是按范围取出,  
// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有  
System.out.println(jedis.lrange("java framework",0,-1));  
jedis.del("java framework");
jedis.rpush("java framework","spring");  
jedis.rpush("java framework","struts");  
jedis.rpush("java framework","hibernate");
System.out.println(jedis.lrange("java framework",0,-1));
}  
/**
* jedis操作Set
*/  
@Test  
public void testSet(){  
//添加  
jedis.sadd("user","liuling");  
jedis.sadd("user","xinxin");  
jedis.sadd("user","ling");  
jedis.sadd("user","zhangxinxin");
jedis.sadd("user","who");  
//移除noname  
jedis.srem("user","who");  
System.out.println(jedis.smembers("user"));//获取所有加入的value  
System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素  
System.out.println(jedis.srandmember("user"));  
System.out.println(jedis.scard("user"));//返回集合的元素个数  
}  
@Test  
public void test() throws InterruptedException {  
//jedis 排序  
//注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)  
jedis.del("a");//先清除数据,再加入数据进行测试  
jedis.rpush("a", "1");  
jedis.lpush("a","6");  
jedis.lpush("a","3");  
jedis.lpush("a","9");  
System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]  
System.out.println(jedis.sort("a")); //[1, 3, 6, 9]  //输入排序后结果  
System.out.println(jedis.lrange("a",0,-1));  
}  
@Test
public void testRedisPool() {
RedisUtil.getJedis().set("newname", "中文测试");
System.out.println(RedisUtil.getJedis().get("newname"));
}
}


Redis连接池

package com.test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public final class RedisUtil {
//Redis服务器IP
private static String ADDR = "192.168.0.100";
//Redis的端口号
private static int PORT = 6379;
//访问密码
private static String AUTH = "admin";
//可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
private static int MAX_ACTIVE = 1024;
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private static int MAX_IDLE = 200;
//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
private static int MAX_WAIT = 10000;
private static int TIMEOUT = 10000;
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private static boolean TEST_ON_BORROW = true;
private static JedisPool jedisPool = null;
/**
* 初始化Redis连接池
*/
static {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWait(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取Jedis实例
* @return
*/
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;
}
}
/**
* 释放jedis资源
* @param jedis
*/
public static void returnResource(final Jedis jedis) {
if (jedis != null) {
jedisPool.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-315833-1-1.html 上篇帖子: redis 结合Spring的应用 下篇帖子: Redis数据库介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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