当前位置: 首页 > 科技观察

Windows下Redis的安装使用

时间:2023-03-12 01:37:17 科技观察

Redis是一个key-value存储系统。与Memcached类似,它支持相对更多的值类型进行存储,包括string(字符串)、list(链表)、set(集合)、zset(sortedset——有序集合)和hash(散列类型)。这些数据类型支持push/pop、add/remove、intersection、union、difference等更丰富的操作,而且这些操作是原子的。在此基础上,redis支持多种方式的排序。和memcached一样,数据缓存在内存中以保证效率。不同的是redis周期性的将更新的数据写入磁盘或者将修改操作写入附加的记录文件,并在此基础上实现了master-slave。前言因为是第一次使用,所以在windows下安装使用,参考了几篇博客,下面整理一下:安装Redis官网:http://redis.io/官方下载:http://redis.io/download可以根据需要下载不同版本的windows版本:https://github.com/mythz/redis-windowsgithub的资源可以直接ZIP下载(这里友情提醒下不知道)。下载完成后,右键解压到硬盘,如D:\Redis\redis-2.6。D:\Redis\redis-2.6\bin\release下有两个zip包,一个32位,一个64位。根据你windows的位数,解压到D:\Redis\redis-2.6根目录下。2、启动Redis,进入redis目录后启动服务(注意添加redis.conf)。redis-server.exeredis.conf窗口应保持打开状态。当关闭时,redis服务会自动关闭。Redis会自动保存数据到硬盘,所以图片是我第一个第二次打开的时候从disk3加载的多了一个DB。测试使用另一个命令行窗口进入redis目录(注意修改自己的ip)redis-cli.exe-h192.168.10.61-p63794.Java开发包JedisJedis:http://www.oschina.net/p/jedis(Redis官方Java开发包)123redis.clients4jedis52.0.06jar7compile8测试例子原帖:http://flychao88.iteye.com/blog/1527163packagecom.lujianing.utils;importorg.junit.Before;importorg.junit.Test;importredis.clients.jedis.Jedis;importredis.clients.jedis.JedisPool;importredis.clients.jedis.JedisPoolConfig;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;/***Createdbylujianingon14-2-28.*/publicclassJedisUtilTest{JedisPoolpool;Jedisjedis;@BeforepublicvoidsetUp(){pool=newJedisPool(newJedisPoolConfig(),"192.168.10.61");jedis=pool.getResource();//jedis.auth("密码");}@TestpublicvoidtestGet(){System.out.println(jedis.get("lu"));}/***Redis存储主字符串*CRUD*/@TestpublicvoidtestBasicString(){//-----添加数据--------jedis。set("name","minxr");//将value-->minxr放入key-->nameSystem.out.println(jedis.get("name"));//执行结果:minxr//-----修改数据------------//1.修改jedis.append("name","jarorwar");//很直观,类似于map将jarorwarappend到达已有值后System.out.println(jedis.get("name"));//执行结果:minxrjarorwar//2、直接覆盖原有数据jedis.set("name","闵晓蓉");System.out.println(jedis.get("name"));//执行结果:闵晓蓉//删除key对应的记录jedis.del("name");System.out.println(jedis.get("name""));//执行结果:null/***mset等同于*jedis.set("name","minxr");*jedis.set("jarorwar","闵晓蓉");*/jedis.mset("名称","minxr","jarorwar","闵晓蓉");System.out.println(jedis.mget("name","jarorwar"));}/***jedis操作图*/@TestpublicvoidtestMap(){Mapuser=newHashMap();user.put("name","minxr");user.put("pwd","password");jedis.hmset("user",user);//取出user中的name,执行结果:[minxr]-->注意结果是一个泛型List//最后一个参数是redis中存储的map对象的key,后面跟着by是放入map的对象的key,后面的key可以跟多个,是一个可变参数Listrsmap=jedis.hmget("user","name");System.out.println(rsmap);//删除map中的一个key值//jedis.hdel("user","pwd");System.out.println(jedis.hmget("user","pwd"));//因为删除了,所以whatisreturnedisnullSystem.out.println(jedis.hlen("user"));//返回key为user1的key存储的value的个数System.out.println(jedis.exists("user"));//是否有key为user的记录returnstrueSystem.out.println(jedis.hkeys("user"));//返回map中所有key[pwd,name]objectSystem.out.println(绝地武士.hvals("user"));//返回map对象中的所有值[minxr,password]Iteratoriter=jedis.hkeys("user").iterator();while(iter.hasNext()){Stringkey=iter.next();System.out.println(key+":"+jedis.hmget("user",key));}}/***jedis操作列表*/@TestpublicvoidtestList(){//在开始之前,删除所有内容jedis.del("javaframework");System.out.println(jedis.lrange("javaframework",0,-1));//先在keyjavaframeworkjedis中存放三段数据。lpush("javaframework","spring");jedis.lpush("javaframework","struts");jedis.lpush("javaframework","hibernate");//检索所有数据jedis.lrange按范围取出,//第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度-1表示获取全部System.out.println(jedis.lrange("javaframework",0,-1));}/***jedis操作Set*/@TestpublicvoidtestSet(){//添加jedis.sadd("sname","minxr");jedis.sadd("sname","jarorwar");jedis.sadd("sname","闵晓蓉");jedis.sadd("sanme","noname");//去掉nonamejedis.srem("sname","noname");System.out.println(jedis.smembers("sname"));//获取所有附加值System.out.println(jedis.sismember("sname","minxr"));//判断minxr是否为sname集合的元素System.out.println(jedis.srandmember("sname"));System.out.println(jedis.scard("sname"));//返回集合中的元素个数}@Testpublicvoidtest()throwsInterruptedException{//key中传入的通配符可以使用System.out.println(jedis.keys("*"));//返回当前库中的所有key[sose,sanme,name,jarorwar,foo,sname,javaframework,user,braand]System.out.println(jedis.keys("*name"));//returnedsname[sname,name]System.out.println(jedis.del("sanmdde"));//删除key为sanmdde的对象deletesuccessfulreturn1删除失败(或不存在)return0System.out.println(jedis.ttl("sname"));//返回给定key的有效时间,如果为-1则表示永远有效jedis.setex("timekey",10,"min");//通过该方法,可以指定key的存活(有效时间)时间为秒Thread.sleep(5000);//休眠5秒后,剩余时间<=5System.out.println(jedis.ttl("时间键"));//输出结果为5jedis.setex("timekey",1,"min");//设置为1后剩余时间为1System.out.println(jedis.ttl("timekey"));//输出结果为1System.out.println(jedis.exists("key"));//检查key是否存在System.out.println(jedis.rename("timekey","time"));System.out.println(jedis.get("timekey"));//因为去掉了,所以返回的是nullSystem.out.println(jedis.get("time"));//因为timekey改名为time所以可以得到valuemin//jedis排序//注意这里的rpush和lpush是List操作,是一个双向链表(但是从性能上来说)jedis.del("a");//先清除数据,再添加测试数据jedis.rpush("a","1");jedis.lpush("a","6");jedis.lpush("a","3");jedis.lpush("a","9");System.out.println(jedis.lrange("a",0,-1));//[9,3,6,1]System.out.println(jedis.sort("a"));//[1,3,6,9]//输入排序后的结果System.out.println(jedis.lrange("a",0,-1));}}Redis会定时保存数据到硬盘