|
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
去Redis官网http://redis.io/下载最新的安装包。下面以linux下的安装为例:
上传redis-2.4.17.tar.gz 到服务器 (自选目录,如/home/usr)
解压缩redis-2.4.17.tar.gz (tar –zxvf redis-2.4.17.tar.gz) 得到 redis-2.4.17目录
进入目录redis-2.4.17文件夹 (cd redis-2.4.17)
编译安装 (make && make install)
检查安装是否成功(成功后redis-2.4.17/src目录中会生成redis-server、redis-cli两个文件)
启动redis (执行redis-2.4.17/src目录下的redis-server文件如:./redis-server &)
打开redis客户端测试redis是否工作正常 (执行redis-2.4.17/src目录下的redis-cli文件:./redis-cli)
Jedis简单使用
Jedis jedis = new Jedis("10.11.20.140");
String keys = "name";
// 删数据
jedis.del(keys);
// 存数据
jedis.set(keys, "zhangsan");
// 取数据
String value = jedis.get(keys);
System.out.println(value);
使用Jedis池。池化实现Jedis使访问redis的效率更高。
初始化池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(maxAcive);
config.setMaxIdle(maxIdle);
config.setMaxWait(maxWait);
config.setTestOnBorrow(testOnBorrow);
config.setTestWhileIdle(testWhileIdle);
config.setMinEvictableIdleTimeMillis(minEvictableIdleTime);
config.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRuns);
config.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
pool = new JedisPool(config, redisIp, port);
从池中取jedis对象
Jedis jedis = pool.getResource();
释放jedis对象回到池
pool.returnResource(jedis);
连接相关API
//默认使用0号数据库,这里可以选择
jedis.select(1);
//清空当前数据库
jedis.flushDB();
//清空所有数据库
jedis.flushAll();
key相关API
String key = "zhang";
//key的有效期3s
jedis.expire(key, 3);
//重命名key
jedis.rename("zhang", "zhang1");
//是否存在key,返回boolean
jedis.exists(key);
//遍历key
Set<String> keys = jedis.keys("*");
String相关API
//设置key-value
jedis.set("ye", "liang");
//根据key获得value
System.out.println(jedis.get("ye"));
//删除key
jedis.del("ye");
Map相关API
//将map存入redis
jedis.hset("student:1", "NUM", "1");
jedis.hset("student:1", "NAME", "zhangsan");
jedis.hset("student:2", "NUM", "2");
jedis.hset("student:2", "NAME", "lisi");
//删除某个map
jedis.hdel("student:1", "NUM");
//获取map
System.out.println(jedis.hget("student:1", "NAME"));
//遍历map
Set<String> fields = jedis.hkeys("student:2");
for(String field : fields){
System.out.println(field+":"+jedis.hget("student:2", field));
}
List相关API
//添加数据
jedis.lpush("lists", "aa");
jedis.lpush("lists", "bb");
jedis.lpush("lists", "cc");
//list长度
System.out.println(jedis.llen("lists"));
//获得第一至第三个元素
System.out.println(jedis.lrange("lists", 0, 2));
//修改第一个元素
jedis.lset("lists", 0, "dd");
//获取第一个元素
System.out.println(jedis.lindex("lists", 0));
//删除从表头开始value为bb的一个元素
System.out.println(jedis.lrem("lists", 1, "bb"));
//删除区间以外的数据
System.out.println(jedis.ltrim("lists", 0, 1));
Set相关API
//添加数据
jedis.sadd("sets", "aa");
jedis.sadd("sets", "bb");
jedis.sadd("sets", "cc");
//判断value是否在列表中
System.out.println(jedis.sismember("sets", "bb"));
//整个列表值
System.out.println(jedis.smembers("sets"));
//删除指定元素
System.out.println(jedis.srem("sets", "bb"));
SortedSet相关API
//添加数据
jedis.zadd("zset", 11, "aa");
jedis.zadd("zset", 12, "bb");
jedis.zadd("zset", 13, "cc");
jedis.zadd("zset", 14, "dd");
//元素个数
System.out.println(jedis.zcard("zset"));
//元素下标
System.out.println(jedis.zscore("zset", "cc"));
//整个集合值
System.out.println(jedis.zrange("zset", 0, -1));
//删除元素
System.out.println(jedis.zrem("zset", "cc"));
//score范围内的元素个数
System.out.println(jedis.zcount("zset", 11, 14));
|
|