Redis 试用

1、准备ubuntu虚拟机

2、解决虚拟机与win7通讯问题


解决方法:http://www.cnblogs.com/lanzi/archive/2012/03/30/2425036.html

3、下载redis

http://www.redis.io/download

4、安装redis

     

$tar -zxvf redis.tar
$make
$vim redis.conf
//修改requirepass foobared 去掉注释,换成自己的密码
$./redis-server redis.conf//启动
//删除所有数据
$./redis-cli -a meimima
$flushall
不加-a 密码 无权限操作。

默认端口是6379


5、准备JAVA客户端。

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.1.0</version>
</dependency>
6、

接口

package com.test.redis.dao;

import java.util.List;
import java.util.Map;

public interface HelloWorldDAO {
	public String save(String key,String value);
	public String save(String key,List<String> strList);
	public String save(String key,Map<String,String> strMap);
	
	public String update(String key,String value);
	public String update(String key,List<String> strList);
	public long update(String key,Map<String,String> strMap);
	
	public long delete(String key);
	
	public Map<String,String> getMap(String key);
	public List<String> getList(String key,int begin_index,int count);
	public String getString(String key);
}


7、实现类

package com.test.redis.dao.impl;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import com.test.redis.dao.HelloWorldDAO;

public class HelloWorldDAOImpl implements HelloWorldDAO {
	
	private JedisPool pool;
	private Jedis jedis;
	
	public HelloWorldDAOImpl(){
		pool = new JedisPool(new JedisPoolConfig(),"192.168.43.128");
		jedis = pool.getResource();
		jedis.auth("meimima");
	}
	
	@Override
	public String save(String key, String value) {
		return jedis.set(key, value);
	}

	@Override
	public String save(String key, List<String> strList) {
		for(String s:strList){
			jedis.lpush(key, s);
		}
		return "";
	}

	@Override
	public String save(String key, Map<String, String> strMap) {
		return jedis.hmset(key, strMap);
	}

	@Override
	public String update(String key, String value) {
		//jedis.set 覆盖key对应的值
		//jedis.append 末尾添加新的value
		//jedis.mset = jedis.set1 jedis.set2
		return jedis.set(key, value);
	}

	@Override
	public String update(String key, List<String> strList) {
		jedis.del(key.getBytes());
		return save(key,strList);
		
	}

	@Override
	public long update(String key, Map<String, String> strMap) {
		return 0;
	}

	@Override
	public long delete(String key) {
		//jedis.del(key) 删除key-value
		//jedis.hdel(key,map_key) 删除key对应的map中的map_key值
		return jedis.del(key);
	}

	@Override
	public Map<String, String> getMap(String key) {
		Map<String,String> m = new HashMap<String, String>();
		Iterator<String> it = jedis.hkeys(key).iterator();
		while(it.hasNext()){
			String key1 = it.next();
			m.put(key1,jedis.hmget(key, key1).get(0));
		}
		return m;
	}

	@Override
	public List<String> getList(String key,int begin_index,int count) {
		// TODO Auto-generated method stub
		List<String> l = jedis.lrange(key,begin_index,count);
		return l;
	}

	@Override
	public String getString(String key) {
		return jedis.get(key);
	}

}

8、JUNIT测试类

package com.test.redis.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.test.redis.dao.HelloWorldDAO;
import com.test.redis.dao.impl.HelloWorldDAOImpl;

public class HelloWorldDAOTest {
	String v1;
	String k1;
	String k2;
	List<String> l2;
	String k3;
	Map<String,String> m3;
	static HelloWorldDAO hw;
	@BeforeClass
	public static void initClass(){
		hw = new HelloWorldDAOImpl();
	}
	@Before
	public void init(){
		v1 = "helloWorld!!1";
		k1 = "key1";
		hw.save(k1, v1);
		k2 = "key2";
		l2 = new ArrayList<String>();
		l2.add("helloWorld!list1");
		l2.add("helloWorld!list2");
		l2.add("helloWorld!list3");
		l2.add("helloWorld!list4");
		hw.save(k2, l2);
		k3 = "key3";
		m3 = new HashMap<String, String>();
		m3.put("map1","helloworld!map1");
		m3.put("map2","helloworld!map2");
		m3.put("map3","helloworld!map3");
		m3.put("map4","helloworld!map4");
		hw.save(k3, m3);
	}
	@After
	public void destroy(){
		hw.delete(k1);
		hw.delete(k2);
		hw.delete(k3);
	}
	@Test
	public void testStringGet(){
		Assert.assertEquals(v1,hw.getString(k1));
	}
	@Test
	public void testStringDel(){
		hw.delete(k1);
		Assert.assertEquals(null,hw.getString(k1));
	}
	@Test
	public void testStringUpdate(){
		hw.update(k1, "hello!2");
		Assert.assertEquals("hello!2", hw.getString(k1));
	}
	@Test
	public void testStringSave(){
		Assert.assertEquals("OK", hw.save(k1, v1));
	}
	@Test
	public void testListGet(){
		List<String> l = hw.getList(k2, 0, -1);
		Assert.assertEquals(true,l.containsAll(l2));
		Assert.assertEquals(true,l2.containsAll(l));
	}
	@Test
	public void testListUpdate(){
		List<String> l = new ArrayList<String>();
		l.add("helloWorld!list11");
		l.add("helloWorld!list12");
		l.add("helloWorld!list13");
		hw.update(k2, l);
		Assert.assertEquals(false,hw.getList(k2, 0, -1).containsAll(l2));
		Assert.assertEquals(true,hw.getList(k2, 0, -1).containsAll(l));
	}
	@Test
	public void testListDel(){
		hw.delete(k2);
		Assert.assertEquals(0,hw.getList(k2, 0, -1).size());
	}
	@Test
	public void testMapGet(){
		Assert.assertEquals(m3.size(),hw.getMap(k3).size());
	}
}

9、外送一个序列化工具类~忘记哪个博客里的了~抄一下。

package com.test.redis.util;

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

public class SerializeUtil {
	public static byte[] serialize(Object object) {
		ObjectOutputStream oos = null;
		ByteArrayOutputStream baos = null;
		try {
			// 序列化
			baos = new ByteArrayOutputStream();
			oos = new ObjectOutputStream(baos);
			oos.writeObject(object);
			byte[] bytes = baos.toByteArray();
			return bytes;
		} catch (Exception e) {

		}
		return null;
	}
	
	public static Object unserialize(byte[] bytes) {
		ByteArrayInputStream bais = null;
		try {
			// 反序列化
			bais = new ByteArrayInputStream(bytes);
			ObjectInputStream ois = new ObjectInputStream(bais);
			return ois.readObject();
		} catch (Exception e) {

		}
		return null;
	}
}

序列化工具类本来是想将对象和LIST等转为BYTE[]存入redis.这样会方便一点。有时间再试试。


睡觉了~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值