首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Redis的安装使用及透过Java操作Redis

2014-01-08 
Redis的安装使用及通过Java操作Redis?redis是一个key-value存储系统。和Memcached类似,它支持存储的value类

Redis的安装使用及通过Java操作Redis

?

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

?

Redis安装

去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)

?

Java操作Redis客户端Jedis

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);

?

?

Jedis主要API

连接相关API

//默认使用0号数据库,这里可以选择jedis.select(1);//清空当前数据库jedis.flushDB();//清空所有数据库jedis.flushAll();

?key相关API

String key = "zhang";//key的有效期3sjedis.expire(key, 3);//重命名keyjedis.rename("zhang", "zhang1");//是否存在key,返回booleanjedis.exists(key);//遍历keySet<String> keys = jedis.keys("*");

?String相关API

//设置key-valuejedis.set("ye", "liang");//根据key获得valueSystem.out.println(jedis.get("ye"));//删除keyjedis.del("ye");

?Map相关API

//将map存入redisjedis.hset("student:1", "NUM", "1");jedis.hset("student:1", "NAME", "zhangsan");jedis.hset("student:2", "NUM", "2");jedis.hset("student:2", "NAME", "lisi");//删除某个mapjedis.hdel("student:1", "NUM");//获取mapSystem.out.println(jedis.hget("student:1", "NAME"));//遍历mapSet<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));
?

热点排行