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

redis - String字符串操作

2013-01-23 19:40 351 查看
中文命令参考手册

import java.util.List;

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

import redis.clients.jedis.Jedis;

/** 
 * jedis String 类型操作 
 * @author http://blog.csdn.net/java2000_wl 
 * @version <b>1.0</b> 
 */  
public class RedisStringTest {

	private Jedis jedis;
	
	/**
	 * 初始化连接
	 * <br>------------------------------<br>
	 */
	@Before
	public void before() {
		jedis = new Jedis("127.0.0.1");
		jedis.auth("java2000_wl");
	}
	
	/**
	 * 断开连接
	 * <br>------------------------------<br>
	 */
	@After
	public void after() {
		jedis.disconnect();
	}
	
	/**
	 * set 如果存在相同的key 覆盖旧值</br>
	 * 总是返回OK
	 * <br>------------------------------<br> 
	 */
	@Test
	public void testSet() {
		String result = jedis.set("blog", "java2000_wl");
		print(result);
		jedis.set("blog", "java2000_wl_new");
		print(result);
	}
	
	/**
	 * setnx 如果key存在 不做任何操作  返回0, </br>
	 * 		   如果key不存在  设置值成功 返回1
	 * <br>------------------------------<br> 
	 */
	@Test
	public void testSetnx() {
		long result = jedis.setnx("blog1", "java2000_wl");
		print(result);
	}
	
	/**
	 * setex 设置值  并指定键值对应的有效期  单位为秒</br>
	 * 如果key 存在 覆盖旧值  成功返回 OK
	 * <br>------------------------------<br> 
	 */
	@Test
	public void testSetex() {
		String result = jedis.setex("setex", 60, "setex_value");
		print(result);
	}
	
	/**
	 * setrange 通过key 和  offset 替换value </br>
	 * 例如:setex - > setex_value   
	 * jedis.setrange("setex", 6, "Setrange")
	 * </br>  
	 * 替换为 setex_Setrange
	 * <br>------------------------------<br> 
	 */
	@Test
	public void testSetrange() {
		// setex_value  被替换为: setex_Setrange
		long result = jedis.setrange("setex", 6, "Setrange");
		print(result);
		print(jedis.get("setex"));
	}
	
	/**
	 * mset 同时设置一个或多个 key-value对。
	 * 如果某个key-value 存在  会用新值覆盖原来的旧值, 总是成功, 成功返回OK
	 * <br>------------------------------<br>
	 */
	@Test
	public void testMset() {
		String result = jedis.mset("key1", "value1", "key2", "value2", "key..", "value..");
		print(result);
	}
	
	/**
	 * msetnx 同时设置一个或多个 key-value对。
	 * 如果某个key-value存在   返回0  所有操作都会回滚, 如果成功 返回ok
	 * <br>------------------------------<br>
	 */
	@Test
	public void testMsetnx() {
		long result = jedis.msetnx("msetnxKey1", "msetnxValue1", "msetnxKey2", "msetnxValue2");
		print(result);
	}
	
	/**
	 * get 通过key 获取对应的value  如果key不存在 返回nil
	 * <br>------------------------------<br>
	 */
	@Test
	public void testGet() {
		String value = jedis.get("msetnxKey1");
		print(value);
	}
	
	/**
	 * getset 通过key 获取对应的value 然后通过key 设置信的value
	 * <br>------------------------------<br>
	 */
	@Test
	public void testGetSet() {
		String value = jedis.getSet("key1", "value_new");
		print(value);
		
		value = jedis.get("key1");
		print(value);
	}
	
	/**
	 * 返回key对应的value  在由start 和 end 两个偏移量截取
	 * <br>------------------------------<br>
	 */
	@Test
	public void testGetrange() {
		String value = jedis.getrange("key1", 6, 8);
		print(value);
	}
	
	/**
	 * 返回多个key 对应的value
	 * <br>------------------------------<br>
	 */
	@Test
	public void testMget() {
		List<String> list = jedis.mget("key1", "key2", "key3");
		print(list);
	}
	
	/**
	 * 对key对应的value  做+1操作  返回+1后的新值
	 * <br>------------------------------<br>
	 */
	@Test
	public void testIncr() {
		jedis.set("incr", "2");
		// 返回33
		Long result = jedis.incr("incr");
		print(result);
	}
	
	/**
	 * 对key对应的value 加指定值 返回新值  如果key不存在 认为原来的value为0
	 * <br>------------------------------<br>
	 */
	@Test
	public void testIncrBy() {
		jedis.set("incrBy", "2");
		// 返回7
		Long result = jedis.incrBy("incrBy", 5);
		print(result);
	}
	
	/**
	 * 对key对应的value 做-1操作  返回新值
	 * <br>------------------------------<br>
	 */
	@Test
	public void testDecr() {
		// 7 - 1
		Long result = jedis.decr("incrBy");
		print(result);
	}
	
	/**
	 * 对key对应的value 减去指定值  返回新值  如果key不存在    认为原来的value为0
	 * <br>------------------------------<br>
	 */
	@Test
	public void testDecrBy() {
		Long result = jedis.decrBy("DecrBy", 5);
		print(result);
	}
	
	/**
	 * 给指定的key的值追加, 返回新字符串的长度
	 * <br>------------------------------<br>
	 */
	@Test
	public void testAppend() {
		// 追加前 value_new
		String old = jedis.get("key1");
		print(old);
		// 追加后  value_new124
		Long long1 =jedis.append("key1", "124");
		print(long1);
	}
	
	/**
	 * 取得指定key的value值的长度
	 * <br>------------------------------<br>
	 */
	@Test
	public void testStlen() {
		long len = jedis.strlen("key1");
		print(len);
	}
	
	void print(Object object) {
		System.out.println(object.toString());
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: