Spring集成Redis实例入门
来源:互联网 发布:首席数据官职责 编辑:程序博客网 时间:2024/06/09 18:42
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() {}@Beforepublic 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@Ignorepublic void testSet() {System.out.println(jedis.set("name", "changxiaoxiao"));}@Test@Ignorepublic void testGet() {System.out.println(jedis.get("name"));}@Test@Ignorepublic void addOne() {/* * 构造一个User对象 */User user = new User();user.setName("changxiaoxiao");user.setPass("changxiaoxiao");jedis.set("userOne".getBytes(), ObjectToByte(user));System.out.println("添加成功!");}@Test//@Ignorepublic 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;}}
- Spring集成Redis实例入门
- (16)spring boot中集成Redis实例
- Spring和AspectJ集成开发入门实例
- Spring和dwr的集成入门实例
- ActiveMQ入门实例及与Spring集成
- Mybatis及与spring集成入门实例
- dubbo+spring+zookeeper的集成入门实例
- redis与Spring集成
- Spring与redis集成
- redis与spring集成
- Spring Cache集成redis
- Spring 集成 Redis
- spring-data集成redis
- redis spring 集成
- spring集成redis详解
- Spring Cache集成redis
- spring redis集成
- spring redis集成
- 传真通信简介
- 浏览器与服务器通信的过程
- ASP.NET中实现页面间的参数传递 QueryString/Application/Session/Cookie
- FTP整理1:命令和返回码
- 第八周项目一
- Spring集成Redis实例入门
- 利用Nginx搭建http和rtmp协议的流媒体服务器
- 智慧医疗
- http请求响应模型
- DMA映射
- Java设计模式五:迭代器模式(Iterator)
- Java数据结构内容整理
- 浅析Google医疗云失败及我国医疗云实施
- 模板方法