redis 是一个key-value存储系统,它支持存储的value属性更多,包括String,map,list等。
这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。redis的持久性会更高,不会因断电,重启等原因丢失数据。
redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
R\redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
redis的多种应用场景,推荐http://os.51cto.com/art/201107/278292.htm
下面是简单的例子:
1.下载redis
2.解压缩redis包之后,运行(redis-server.exe)
3.下载jar包,并引入工程,我用的是jedis-2.0.0.jar
4.代码实现
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.List;
import java.util.Map;
import redis.clients.jedis.Jedis;
public class RedisTest {
public void testDemo(){
/** 连接redis服务器 */
//连接redis,默认端口号是6379
String ip="localhost";
int port=6379;
Jedis redis=new Jedis(ip, port);
/** String */
//设置key-value
redis.set("class", "一班");
System.out.println(redis.get("class"));
//hset(key,field,value),设置hash表中key的某field为某值
redis.hset("yutest", "name", "zhangsan");
redis.hset("yutest", "age", "27");
//获取hash,field的值
List<String> list=redis.hmget("yutest", "name","age");
for (String e : list) {
System.out.println("========================");
System.out.println(e);
}
/** List */
//先清空指定List
redis.del("teachers");
redis.lpush("teachers", "denglijun");
redis.lpush("teachers", "zhangmanyu");
redis.lpush("teachers", "wangfei");
System.out.println("========================");
System.out.println("teachers:"+redis.lrange("teachers", 0, -1));
/** Map */
Map<String,String> map=new HashMap<String, String>();
map.put("husband", "dengchao");
map.put("wife", "sunli");
redis.hmset("couple", map);
System.out.println("========================");
System.out.println("couple:"+redis.hmget("couple", "husband","wife"));
}
public static void main(String[] args) {
RedisTest redisTest=new RedisTest();
redisTest.testDemo();
}
}
public void testDemo(){
/** 连接redis服务器 */
//连接redis,默认端口号是6379
String ip="localhost";
int port=6379;
Jedis redis=new Jedis(ip, port);
/** String */
//设置key-value
redis.set("class", "一班");
System.out.println(redis.get("class"));
//hset(key,field,value),设置hash表中key的某field为某值
redis.hset("yutest", "name", "zhangsan");
redis.hset("yutest", "age", "27");
//获取hash,field的值
List<String> list=redis.hmget("yutest", "name","age");
for (String e : list) {
System.out.println("========================");
System.out.println(e);
}
/** List */
//先清空指定List
redis.del("teachers");
redis.lpush("teachers", "denglijun");
redis.lpush("teachers", "zhangmanyu");
redis.lpush("teachers", "wangfei");
System.out.println("========================");
System.out.println("teachers:"+redis.lrange("teachers", 0, -1));
/** Map */
Map<String,String> map=new HashMap<String, String>();
map.put("husband", "dengchao");
map.put("wife", "sunli");
redis.hmset("couple", map);
System.out.println("========================");
System.out.println("couple:"+redis.hmget("couple", "husband","wife"));
}
public static void main(String[] args) {
RedisTest redisTest=new RedisTest();
redisTest.testDemo();
}
}
5.运行结果
一班
========================
zhangsan
========================
27
========================
teachers:[wangfei, zhangmanyu, denglijun]
========================
couple:[dengchao, sunli]
========================
zhangsan
========================
27
========================
teachers:[wangfei, zhangmanyu, denglijun]
========================
couple:[dengchao, sunli]