阅读更多

1顶
1踩

开源软件

原创新闻 Redis入门-windows下的安装与使用

2015-04-21 10:06 by 见习记者 yuwenlin2008 评论(3) 有6044人浏览

        Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store)。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list),集合(sets) 和 有序集合(sorted sets)等类型。

 

初次使用,先在windows下小试一把,根据网上的资料整理下,以作为日志记录。

 

1.windows下安装

官网:http://redis.io/

官网下载的是linux版,windows版在github上,由Microsoft Open Tech group提供的:

https://github.com/MSOpenTech/redis

可以直接点右则Download Zip下载,也可以通过git克隆。

 

下载后解压到D盘根目录:D:\redis-2.8

bin目录下有个release文件,可以解压bin目录,也可以放到D:\redis-2.8

这里我省事,直接解压到D:\redis-2.8,环境变量懒得配了

 

2.启动服务端

启动服务:打开cmd,进到目录D:\redis-2.8,执行如下命令:

 

redis-server  redis.windows.conf

 执行后报如下错误:

 

 

D:\redis-2.8>redis-server.exe redis.windows.conf
[7736] 19 Apr 21:36:42.974 #
The Windows version of Redis allocates a large memory mapped file for sharing
the heap with the forked process used in persistence operations. This file
will be created in the current working directory or the directory specified by
the 'dir' directive in the .conf file. Windows is reporting that there is
insufficient disk space available for this file (Windows error 0x70).

You may fix this problem by either reducing the size of the Redis heap with
the --maxheap flag, or by starting redis from a working directory with
sufficient space available for the Redis heap.

Please see the documentation included with the binary distributions for more
details on the --maxheap flag.

Redis can not continue. Exiting.

 根据提示,是 maxheap 标识有问题,打开配置文件 redis.windows.conf ,搜索 maxheap , 然后直接指定好内容即可。

 

 

.......
#  
# maxheap <bytes>
maxheap 1024000000
.......

 然后再次启动,OK,成功。

 

 

D:\redis-2.8>redis-server redis.windows.conf
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.8.17 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 5856
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[5856] 19 Apr 20:24:12.984 # Server started, Redis version 2.8.17
[5856] 19 Apr 20:24:12.984 * DB loaded from disk: 0.000 seconds
[5856] 19 Apr 20:24:12.984 * The server is now ready to accept connections on po
rt 6379

 3.启动客户端测试

 

根据自带的客户端软件测试,双击打开 redis-cli.exe, 如果不报错,则连接上了本地服务器,然后测试,比如 set命令,get命令:

 

127.0.0.1:6379> set hello redis
OK
127.0.0.1:6379> get hello
"redis"
127.0.0.1:6379>

 4.基于Java开发包(Jedis)测试

 

新建maven工程,添加Jedis依赖:

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

 测试类:

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;
/**
 * Redis的官方首选Java开发包jedis
 */
public class JedisTest {
 
        JedisPool pool;
        Jedis jedis;
        
        public static void main(String[] args) {
        	JedisTest jt = new JedisTest();
        	jt.setUp();
        	jt.testGet();
		}
        
        public void setUp() {
            pool = new JedisPool(new JedisPoolConfig(), "192.168.9.74");
 
            jedis = pool.getResource();
         //   jedis.auth("password");
        }
 
 
        public void testGet(){
            System.out.println(jedis.get("yuwl"));
        }
 
        /**
         * Redis存储初级的字符串
         * CRUD
         */
        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
         */
        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
         */
        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
         */
        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"));//返回集合的元素个数
        }
 
        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会定时 保存数据到硬盘上,服务端窗口:

[5856] 19 Apr 20:24:12.984 # Server started, Redis version 2.8.17
[5856] 19 Apr 20:24:12.984 * DB loaded from disk: 0.000 seconds
[5856] 19 Apr 20:24:12.984 * The server is now ready to accept connections on po
rt 6379
[5856] 19 Apr 21:47:49.294 * 1 changes in 900 seconds. Saving...
[5856] 19 Apr 21:47:49.521 # fork operation complete
[5856] 19 Apr 21:47:49.553 * Background saving terminated with success

 

参考资料:

http://blog.csdn.net/renfufei/article/details/38474435

http://my.oschina.net/lujianing/blog/204103

http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html

http://redis.cn/

 

1
1
评论 共 3 条 请登录后发表评论
3 楼 juedui0769 2015-04-23 13:46
yixiandave 写道

redis的java客户端很多,目前最普遍使用的是jedis

Thanks.
2 楼 yixiandave 2015-04-23 13:20
juedui0769 写道
有jar包可以直接嵌入到java应用中吗?!

redis的java客户端很多,目前最普遍使用的是jedis
1 楼 juedui0769 2015-04-23 11:20
有jar包可以直接嵌入到java应用中吗?!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Premiere全部特效滤镜功能讲解.pdf

    Premiere全部特效滤镜功能讲解.pdfPremiere全部特效滤镜功能讲解.pdfPremiere全部特效滤镜功能讲解.pdfPremiere全部特效滤镜功能讲解.pdfPremiere全部特效滤镜功能讲解.pdf

  • pr扫光转场插件.zip

    pr扫光转场插件.zip

  • PR滤镜特效

    Adobe_Premiere_Pro2.0滤镜特效全解,中英文对照。

  • Pr:视频效果

    变换Transform自动重构:Pr 2020 版新增,可自动重构某个剪辑。也可使用Pr菜单:序列/自动重构序列来重构整个序列。非常适用于将媒体发布到不同的分享平台。裁剪:常用于实现多...

  • 视频滤镜

    视频滤镜

  • Pr的特效

    Adjust 1.Brightness &amp; Contrast(亮度与对比度) 本视频滤镜效果将改变画面的亮度和对比度。 2.Channel Mixer(通道合成器)使用本视频滤镜效果,能用几个颜色通道的合成值来修改一个颜色通道。 3.Color Balance(色彩平衡)本视频滤镜效果利用滑块来调整RGB颜色的分配比例,使得某个颜色偏重以调整其明暗程度。 4.Convolution Ker...

  • Android直播开发之旅(18):FFmpeg中滤镜(filter)的工作原理

    文章目录1. 什么是滤镜1.1 简单滤镜(滤镜链)1.2 复杂滤镜(滤镜图)2. 滤镜API介绍与使用2.1 滤镜API介绍2.1.1 结构体2.1.2 功能函数2.2 滤镜API的使用2.2.1 配置滤镜图2.2.2 使用滤镜图 1. 什么是滤镜  滤镜(filter)是指将未经过处理的原始音频帧(如PCM)或视频帧(如YUV、RGB)经过滤镜器处理后,得到具体“特殊效果”的音频帧或视频帧,比...

  • UnityShader实例16:屏幕特效之径向模糊(Radial Blur)

    径向模糊,是一种从中心向外呈幅射状的逐渐模糊的效果(如下图),在图形处理软件photoshop里面也有这个模糊滤镜。而在游戏中常常用来模拟一些动感的效果,如鬼泣4中的场景切换特效,和一些技能打击特效;赛车游戏也尝用来模拟动感模糊,如狂野飙车,极品飞车等。

  • Premiere滤镜全解

      Premiere滤镜全解1.Brightness & Contrast(亮度与对比度)本视频滤镜效果将改变画面的亮度和对比度。类似于电视中的亮度和对比度的调节,但在这里调整则是对滑块的移动,2.Channel Mixer(通道合成器)使用本视频滤镜效果,能用几个颜色通道的合成值来修改一个颜色通道。使用该效果可创建使用其他颜色调整工具很难产生的颜色调整效果,通

  • 图像视频滤镜算法详解---滤镜初识

         所谓滤镜,最初是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果,也就是硬件滤镜。 我们做的滤镜算法又叫做软件滤镜,是对大部分硬件镜头滤镜进行的模拟,当然,误差也就再所难免,我们的宗旨只是无限逼近。也是这个原因,我们无法再现真实的拍摄场景,无法复原照片中未包含的信息,进而也难以实现某些特殊滤镜效果,诸如偏光镜和紫外线滤色镜(UV)的效果等等。 目前,从强大的PHOTO...

  • 使用GPUImage实现视频滤镜

    关于GPUImage 这里直接引用官方描述:The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated filters and other effects to images, live camera video, and movies....

  • pr扫光转场插件_PR转场插件MAC版 FilmImpact Transition Pack V1-V2

    支持软件和电脑系统Premiere Pro CC 2020-2014, CS6 and CS5.5 Mac (OSX 10.7 or higher)FilmImpact Transition Pack 1 共10种效果:Impact Flash – 亮部白闪切换Impact Roll – 卷动推动切换(带动态模糊)Impact Push – 推动切换(带动态模糊)Impact Blur to C...

  • 人工智能机器视觉专业英语积累

    attribute 英 [ˈætrɪˌbjuːt] 属性;特征

  • 图像视频滤镜算法---颜色滤镜

      承接上一篇滤镜初识,本文将介绍第一种滤镜:颜色滤镜。 颜色滤镜 颜色滤镜即调色滤镜,也是最常见的滤镜,任何通过调节图像像素值的亮度、对比度、饱和度、色相等等方法,得到的不同于原图像颜色的效果,都统称为颜色滤镜。 我们来做一个颜色增强滤镜,以此说明,方便大家更好的理解。 如下图所示,我们对一副图在PS中进行饱和度调整(饱和度提高41): 那么,我们在这个过程中,算法实际上做了...

  • premiere视频滤镜详解

    premiere视频滤镜详解,F

  • 视频滤镜参数

    在配置编译FFmpeg时可以通过--disable-filters来禁止所有滤镜的编译。也可以配置编译脚本来输出所有包含进编译的滤镜信息。下面是当前可用的视频滤镜介绍。 alphaextract 把输入视频作为灰度视频来提取透明通道,它通常和alphamerge滤镜联用。 alphamerge 通过添加或者替换透明通道,让主要视频与另外一路视频混合。这里主要是使用alpha

  • iOS 合并带有透明通道的视频-

    视频的合成,透明通道是大家所熟知的       透明通道是一个致力于公益活动全程透明化的组织。 在图形图像学中,透明通道也称Alpha通道,代表数字图像中像素点的透明信息。白色的Alpha像素用以定义不透明的彩色像素,而黑色的Alpha定以透明像素,黑白之间的灰阶则是彩色图片中的半透明部分。-----摘自百度百科 所以在合并雪花,灯光,爆破。。。 这里就需要有透明通道的视

  • 图像视频滤镜算法---几何滤镜

    本文承接序言所述,介绍另一类滤镜:几何滤镜 几何滤镜 几何滤镜是指通过某种像素坐标位置的变换,得到对应新的效果的一类滤镜; 像素坐标位置的变换过程,实际上就是几何滤镜的算法实现; 几何滤镜逻辑 几何滤镜的逻辑一般如下所示: ①输入原图 ②定义像素坐标位置计算公式 ③遍历原图像素,进行位置变换 ④得到新效果图 几何滤镜举例分析 这里以球面滤镜(哈哈镜)特效为例来讲解一个几何滤镜...

  • Android视频编辑器(四)通过OpenGL给视频增加不同滤镜效果

    前言        在上面的几篇文章中,我们实现了录制视频、通过opengl在录制过程中和给本地视频添加水印和美颜效果,还没看过的童鞋,可以看该系列的前面三篇文章。而这篇博客,我们来实现给视频添加各种各样的滤镜。现如今给视频加各种不同的滤镜对各视频类app来说,已经是标配功能。而添加各类滤镜可以使我们拍摄的视频更美观漂亮。所以这篇博客,我们就要来实现给视频添加上除美颜之外的其他滤镜。

Global site tag (gtag.js) - Google Analytics