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

redis 学习笔记

2013-11-25 14:15 127 查看
举个例子,以下命令创建了一个新的数据库键值对,这个键值对的键和值都是字符串对象,它
们都包含一个sds 值:
redis> SET book "Mastering C++ in 21 days"
OK
redis> GET book
"Mastering C++ in 21 days"
以下命令创建了另一个键值对,它的键是字符串对象,而值则是一个集合对象:
redis> SADD nosql "Redis" "MongoDB" "Neo4j"
(integer) 3
redis> SMEMBERS nosql
1) "Neo4j"
2) "Redis"
3) "MongoDB"


public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.21.11");
jedis.set("foo", "hello");
String value = jedis.get("foo");
System.out.println(value);

Set<String> set = jedis.smembers("nosql");
Iterator<String> itr = set.iterator();

while(itr.hasNext()){
String s = itr.next();
System.out.println(s);
}

jedis.append("foo", " world");
System.out.println(jedis.get("foo"));

}


为了易于理解,我们用一个Redis 执行实例作为例子,解释一下,当执行以下代码时,Redis

内部发生了什么:

redis> SET msg "hello world"

OK

redis> APPEND msg " again!"

(integer) 18

redis> GET msg

"hello world again!"

Note: 这种分配策略会浪费内存吗?

执行过APPEND 命令的字符串会带有额外的预分配空间,这些预分配空间不会被释放,除非

该字符串所对应的键被删除,或者等到关闭Redis 之后,再次启动时重新载入的字符串对象将

不会有预分配空间。

因为执行APPEND 命令的字符串键数量通常并不多,占用内存的体积通常也不大,所以这一

般并不算什么问题。

另一方面,如果执行APPEND 操作的键很多,而字符串的体积又很大的话,那可能就需要修

改Redis 服务器,让它定时释放一些字符串键的预分配空间,从而更有效地使用内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java redis