您的位置:首页 > 数据库 > Redis

实现一致性Spring集成Redis实例入门

2013-04-24 20:59 453 查看
首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责

ShardedJedis实现析分

ShardedJedis是基于一致性哈希法算实现的分布式Redis集群客户端;ShardedJedis的计划分为以下几块:

对象池计划:Pool,ShardedJedisPool,ShardedJedisFactory

面向用户的作操封装:BinaryShardedJedis,BinaryShardedJedis

一致性哈希实现:Sharded

关于ShardedJedis计划,疏忽了Jedis的计划细节,计划类图如下:



代码实现:

model对象:

package com.duobei.memcached.model;

import java.io.Serializable;

public class User implements Serializable {
private static final long serialVersionUID = 1L;

private String name;
private String pass;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPass() {
return pass;
}

public void setPass(String pass) {
this.pass = pass;
}

}

试测类:

每日一道理

青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。

package com.duobei.redis;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.duobei.memcached.model.User;

import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

public class RedisTest {

private ApplicationContext context;
private ShardedJedisPool shardedJedisPool;
private ShardedJedis jedis;

public RedisTest() {

}

@Before
public void init() throws Exception {

String config[] = { "applicationContext.xml",
"applicationContext-redis.xml" };
context = new ClassPathXmlApplicationContext(config);

shardedJedisPool = (ShardedJedisPool) context
.getBean("shardedJedisPool");
jedis = (ShardedJedis) shardedJedisPool.getResource();
}

@Test
@Ignore
public void testSet() {
System.out.println(jedis.set("name", "changxiaoxiao"));
}

@Test
@Ignore
public void testGet() {
System.out.println(jedis.get("name"));
}

@Test
@Ignore
public void addOne() {

/*
* 结构一个User对象
*/
User user = new User();
user.setName("changxiaoxiao");
user.setPass("changxiaoxiao");

jedis.set("userOne".getBytes(), ObjectToByte(user));
System.out.println("添加功成!");
}

@Test
//@Ignore
public void show() {
byte[] bytes = jedis.get("userOne".getBytes());
User user = (User) ByteToObject(bytes);
System.out.println("Name:" + user.getName());
System.out.println("Password:" + user.getPass());
}

/**
* 对象序列化
* @param obj
* @return
*/
public byte[] ObjectToByte(Object obj) {
byte[] bytes = null;
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(obj);
bytes = bo.toByteArray();
bo.close();
oo.close();
}
catch(Exception e) {
e.printStackTrace();
}
return bytes;
}

/**
* 反序列化
* @param bytes
* @return
*/
public Object ByteToObject(byte[] bytes) {
Object object = null;
try {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
object = ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
}

文章结束给大家分享下程序员的一些笑话语录: 刹车失灵

有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。

物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。

工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。

程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐