Windows下Redis的安装使用
博客专区 > 蛙牛 的博客 > 博客详情
Windows下Redis的安装使用
蛙牛 发表于4年前
Windows下Redis的安装使用
  • 发表于 4年前
  • 阅读 59758
  • 收藏 231
  • 点赞 30
  • 评论 26

腾讯云 十分钟定制你的第一个小程序>>>   

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

0.前言

    因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下

1.安装Redis

官方网站:http://redis.io/

官方下载:http://redis.io/download 可以根据需要下载不同版本

windows版:https://github.com/MSOpenTech/redis

github的资源可以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.exe redis.conf

这个窗口要保持开启  关闭时redis服务会自动关闭

redis会自动保存数据到硬盘 所以图中是我第二次开启时 多了一个 DB loaded from disk 

3.测试使用

另外开启一个命令行窗口 进入redis目录下 (注意修改自己的ip)

redis-cli.exe -h 192.168.10.61 -p 6379

4.Java开发包Jedis

Jedis :http://www.oschina.net/p/jedis (Redis的官方首选Java开发包)

<!--Redis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.0.0</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>

测试例子原帖:http://flychao88.iteye.com/blog/1527163

package com.lujianing.utils;

import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
 * Created by lujianing on 14-2-28.
 */
public class JedisUtilTest {



        JedisPool pool;
        Jedis jedis;
        @Before
        public void setUp() {
            pool = new JedisPool(new JedisPoolConfig(), "192.168.10.61");

            jedis = pool.getResource();
         //   jedis.auth("password");
        }


        @Test
        public void testGet(){
            System.out.println(jedis.get("lu"));
        }

        /**
         * Redis存储初级的字符串
         * CRUD
         */
        @Test
        public void testBasicString(){
            //-----添加数据----------
            jedis.set("name","minxr");//向key-->name中放入了value-->minxr
            System.out.println(jedis.get("name"));//执行结果:minxr

            //-----修改数据-----------
            //1、在原来基础上修改
            jedis.append("name","jarorwar");   //很直观,类似map 将jarorwar append到已经有的value之后
            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("name","minxr","jarorwar","闵晓荣");
            System.out.println(jedis.mget("name","jarorwar"));

        }

        /**
         * jedis操作Map
         */
        @Test
        public void testMap(){
            Map<String,String> user=new HashMap<String,String>();
            user.put("name","minxr");
            user.put("pwd","password");
            jedis.hmset("user",user);
            //取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
            //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
            List<String> rsmap = jedis.hmget("user", "name");
            System.out.println(rsmap);

            //删除map中的某个键值
//        jedis.hdel("user","pwd");
            System.out.println(jedis.hmget("user", "pwd")); //因为删除了,所以返回的是null
            System.out.println(jedis.hlen("user")); //返回key为user的键中存放的值的个数1
            System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true
            System.out.println(jedis.hkeys("user"));//返回map对象中的所有key  [pwd, name]
            System.out.println(jedis.hvals("user"));//返回map对象中的所有value  [minxr, password]

            Iterator<String> iter=jedis.hkeys("user").iterator();
            while (iter.hasNext()){
                String key = iter.next();
                System.out.println(key+":"+jedis.hmget("user",key));
            }

        }

        /**
         * jedis操作List
         */
        @Test
        public void testList(){
            //开始前,先移除所有的内容
            jedis.del("java framework");
            System.out.println(jedis.lrange("java framework",0,-1));
            //先向key java framework中存放三条数据
            jedis.lpush("java framework","spring");
            jedis.lpush("java framework","struts");
            jedis.lpush("java framework","hibernate");
            //再取出所有数据jedis.lrange是按范围取出,
            // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
            System.out.println(jedis.lrange("java framework",0,-1));
        }

        /**
         * jedis操作Set
         */
        @Test
        public void testSet(){
            //添加
            jedis.sadd("sname","minxr");
            jedis.sadd("sname","jarorwar");
            jedis.sadd("sname","闵晓荣");
            jedis.sadd("sanme","noname");
            //移除noname
            jedis.srem("sname","noname");
            System.out.println(jedis.smembers("sname"));//获取所有加入的value
            System.out.println(jedis.sismember("sname", "minxr"));//判断 minxr 是否是sname集合的元素
            System.out.println(jedis.srandmember("sname"));
            System.out.println(jedis.scard("sname"));//返回集合的元素个数
        }

        @Test
        public void test() throws InterruptedException {
            //keys中传入的可以用通配符
            System.out.println(jedis.keys("*")); //返回当前库中所有的key  [sose, sanme, name, jarorwar, foo, sname, java framework, user, braand]
            System.out.println(jedis.keys("*name"));//返回的sname   [sname, name]
            System.out.println(jedis.del("sanmdde"));//删除key为sanmdde的对象  删除成功返回1 删除失败(或者不存在)返回 0
            System.out.println(jedis.ttl("sname"));//返回给定key的有效时间,如果是-1则表示永远有效
            jedis.setex("timekey", 10, "min");//通过此方法,可以指定key的存活(有效时间) 时间为秒
            Thread.sleep(5000);//睡眠5秒后,剩余时间将为<=5
            System.out.println(jedis.ttl("timekey"));   //输出结果为5
            jedis.setex("timekey", 1, "min");        //设为1后,下面再看剩余时间就是1了
            System.out.println(jedis.ttl("timekey"));  //输出结果为1
            System.out.println(jedis.exists("key"));//检查key是否存在
            System.out.println(jedis.rename("timekey","time"));
            System.out.println(jedis.get("timekey"));//因为移除,返回为null
            System.out.println(jedis.get("time")); //因为将timekey 重命名为time 所以可以取得值 min

            //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会定时 保存数据到硬盘上

共有 人打赏支持
蛙牛
粉丝 514
博文 45
码字总数 48937
作品 1
评论 (26)
黄勇
写得非常清晰,本文是入门 Redis 的最佳选择,感谢牛蛙同学的分享!后续 Smart 打算做一个 Redis 的插件,若有兴趣的话,欢迎交流,共同学习!
心有灵犀
确实写的不错,不过人家好像叫蛙牛啊
蛙牛

引用来自“心有灵犀”的评论

确实写的不错,不过人家好像叫蛙牛啊

我在黄勇群里 就叫牛蛙。。。osc牛蛙已经有人叫了 所以反过来了
空腔
这用了微软给的补丁吧,redis2.8用微软给的补丁已经不行了
蛙牛

引用来自“Tenzing”的评论

这用了微软给的补丁吧,redis2.8用微软给的补丁已经不行了

我还没遇到补丁的问题 好像网上也见过你说的类似的问题....
空腔

引用来自“蛙牛”的评论

引用来自“Tenzing”的评论

这用了微软给的补丁吧,redis2.8用微软给的补丁已经不行了

我还没遇到补丁的问题 好像网上也见过你说的类似的问题....

你下的那个源码,是微软做的,微软给了个补丁,就是那个,只能用到2.6
恺哥
收藏了,感谢分享
大漠真人
@蛙牛
苏生不惑
nice,不过每次用redis都要开着cmd窗口很麻烦
火龙战士
来学习了!
蛙牛

引用来自“大漠真人”的评论

@蛙牛

三克油哇...
都市网达
非常好,用来做测试,不然得外开一个虚拟机。
GDP_搞地皮

引用来自“苏生不惑”的评论

nice,不过每次用redis都要开着cmd窗口很麻烦

试试用winsw-1.9-bin.exe把它注册成一个Windows服务,nginx也是用这个工具注册成Windows服务的。
eechen

引用来自“Tenzing”的评论

引用来自“蛙牛”的评论

引用来自“Tenzing”的评论

这用了微软给的补丁吧,redis2.8用微软给的补丁已经不行了

我还没遇到补丁的问题 好像网上也见过你说的类似的问题....

你下的那个源码,是微软做的,微软给了个补丁,就是那个,只能用到2.6

上面已经说得很清楚了,Win32/64是非官方提供的包,由Microsoft Open Tech group develops维护,没有达到生产级别,仅适用于开发。
NeoYoung
广告关不掉很伤心的禁用网页声音~~
mopdzz
mark
苏生不惑

引用来自“GDP_搞地皮”的评论

引用来自“苏生不惑”的评论

nice,不过每次用redis都要开着cmd窗口很麻烦

试试用winsw-1.9-bin.exe把它注册成一个Windows服务,nginx也是用这个工具注册成Windows服务的。

谢谢
黄开源中国
看到题目才发现自己一直用的都是linux下的。。。13
黄勇
祝贺!祝贺!今天上“每日一搏”了!
一一叶

引用来自“黄开源中国”的评论

看到题目才发现自己一直用的都是linux下的。。。13

唉,
×
蛙牛
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: