Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。
Redis从它的许多竞争继承来的三个主要特点:
Redis 优势
Redis安装
Ubuntu上安装Redis,打开终端,然后键入以下命令:
$sudo apt-get update
$sudo apt-get install redis-server
启动 Redis
$redis-server
检查Redis是否在工作?
$redis-cli -p 端口 -a 密码
这将打开一个Redis提示,如下图所示:
redis 127.0.0.1:6379>
上面的提示127.0.0.1是本机的IP地址,6379为Redis服务器运行的端口。现在输入PING命令,如下图所示。
redis 127.0.0.1:6379> ping
PONG
这说明你已经成功地安装Redis在您的机器上。
修改redis密码
找到redis.conf 加上一行配置,可以设置运行访问的ip或者访问密码。
requirepass mima
重启
/etc/init.d/reids-server restart
Redis简单使用 set和get
set name wangnian
ok
get name
"wangnian"
查看所有配置
config get *
用java jedis client调用
导入项目依赖
<!--redis客户端-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
代码案例
package redis;
import com.alibaba.fastjson.JSON;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Created by wangnian on 2016/5/2.
* 博客地址:http://my.oschina.net/wangnian
*/
public class JedisTest {
@Test
public void test() throws InterruptedException {
Jedis jedis=new Jedis("127.0.0.1",6379);
jedis.auth("mima");
//key-value
jedis.set("name","张三");//添加值
String x= jedis.get("name"); //查询值
System.out.println(x);
jedis.setex("name",2,"李四"); //设置有效期
for(int i=1;i<4;i++){
System.out.println("等待"+i+"秒");
Thread.sleep(1000);
}
String x1= jedis.get("name"); //查询值
System.out.println(x1);
jedis.mset("name","张三","name1","王五");//同时设置多个
String x2= jedis.get("name1"); //查询值
System.out.println(x2);
jedis.append("name1",",你好啊"); //追加内容
String x3= jedis.get("name1");//查询值
System.out.println(x3);
List<String> list= jedis.mget("name","name1");//同时取多个key
System.out.println(list.size());
//使用hashs存储 是一个String类型的field和value的
jedis.hset("student","name","张三");
String x4= jedis.hget("student","name"); //查询值
System.out.println(x4);
Map<String,String> map=new HashMap<String, String>(); //批量存储值
map.put("name","张三");
map.put("age","22");
map.put("sex","男");
jedis.hmset("student1",map);
String x5= jedis.hget("student1","sex"); //查询值
System.out.println(x5);
List<String> list1= jedis.hmget("student1","name","age","sex");//查询多个指
Map<String,String> map1=jedis.hgetAll("student1");//取key全部
//lists链表结构
jedis.lpush("list","张三1");//在list首部添加元素
jedis.lpush("list","张三2");
jedis.rpush("list","张三3");//在list尾部添加元素
jedis.rpush("list","张三4");
List<String> list2= jedis.lrange("list",0,0);//获取list指定区间的元素
System.out.println(JSON.toJSON(list2));
jedis.lpop("list");//删除首部元素
jedis.rpop("list");//删除尾部元素
jedis.llen("list");//获取长度
//sets数据结构 用来存储一个没有重复元素的集合
jedis.sadd("set1","wangnian");
jedis.sadd("set1","wangnian1");
jedis.srem("set1","wangnian1");//移除value为wangnian1的元素
Set<String> set= jedis.smembers("set1");
System.out.println(set.size());
//sorted sets 是sets的升级版,增加了一个排序的熟悉
jedis.zadd("set2",1,"我是第一个元素");
jedis.zadd("set2",2,"我是第二个元素");
Set<String> set1=jedis.zrange("set2",0,0);
System.out.println(set1.size());
for (String str:set1){
System.out.println(str);
}
Set<String> set2=jedis.zrevrange("set2",0,0);
System.out.println(set2.size());
for (String str:set2){
System.out.println(str);
}
}
}
其他的api都应该差不多,所以就不写test类了。