`
yuzhi2217
  • 浏览: 35040 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

redis - String字符串操作

阅读更多
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());
	}
}

 

分享到:
评论

相关推荐

    redis-5.0.4.tar.gz下载及redis安装过程

    redis安装 1: 下载redis-5.0.4.tar.gz 2: 解压源码并进入目录 tar zxvf redis-5.0.4.tar.gz cd redis-5.0.4 ...String(字符串)类型: set name lijie #设置键name的值为lijie get name #获取name的值。

    redis-4.0.10.tar.gz

    它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 可以自动备份 优势 :性能极高 – Redis能读的速度是110000次/s,写的...

    Redis-x64-3.2.100.zip

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis-x64-3.2.1

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    Redis-x64-4.0.14

    redis安装版 直接可以运行在windows端。。redis是一个key-value...和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

    Redis-for-windows-x64-2.8.2400

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    Redis-x64-5.0.9.msi

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...

    Redis-x64-3.2.100.rar

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key...它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    Redis-x64-2.8.2104.zip (windows下不需安装解压版)

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    redis-2.6.16安装包 + Redis介绍 + 安装教程

    Redis其实是一个服务端缓存数据的一个存储系统,支持的类型有:string(字符串)、list(链表)、set(集合)、zset(排序的集合)和hashs(哈希类型)。这些数据类型都 支持push/pop、add/remove及取交集并集和差集...

    redis-3.4.1-py2.py3-none-any.whl

    redis 是一个 Key-Value 数据库,Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型。python连接redis需要的包,3.4.1版本

    redis-3.0.1.zip

    Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于...它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    Redis-x64-5.0.10

    它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些...

    windows-redis_5.0.14.1

    新增加的Stream(流)数据类型,这样redis就有了6大数据类型,另外五种是String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sorted set有序集合)。它弥补了其它5种数据类型不能实现的功能,比如List...

    redis-3.2.0-win64

    SET keyname datalength data (SET bruce 10 paitoubing:保存key为burce,字符串长度为10的一个字符串paitoubing到数据库),data最大不可超过1G。 GET key获取某个key 的value值。如key不存在,则返回字符串“nil”...

    1币 redis-4.0.10.tar.gz

    linux版redis,版本为1币 redis-4.0.10.tar.gz,REmote DIctionary ...它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    c++ hiredis redis-3.0 vs2013 src

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

Global site tag (gtag.js) - Google Analytics