Redis 是一个开源(BSD许可)的,非关系型的缓存数据库,因为是缓存所以redis的速度会非常快。redis主要是依靠键值对进行存储,类似于java的map、python的字典。
它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。 Redis 内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和不同级别的磁盘持久化(persistence), 并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。
redis支持许多的语言接口,如java、C、C++、C#、PHP、JavaScript、Perl、python等。
Redis的windows版本可以从
Releases · microsoftarchive/redis · GitHub(Releases · microsoftarchive/redis (github.com))
下载。最新版本为3.2.100(2016年发布的)。另外有一个redis.com给出了一个安装连接(A.3.2 Installing Redis on Window | Redis==>Downloads · dmajkic/redis (github.com)。我一开始以为这个是不是更官方一些啊,但是点进去一看,是2011年发布的,会不会太古老了)。
可以下载Redis-x64-3.2.100.msi运行安装,也可以直接下载压缩文件包直接展开使用。我选择了msi安装,我猜测还是有一点点区别的。运行msi安装会在安装完后设置自动启动的服务(这个我不确定,但是后面的碰到的一个问题我怀疑是因为这个原因),而直接展开的话是不是会需要手动执行命令是的redis称为自动启动的服务。如果不是很自信(像我一样^-^)的话我觉得运行msi安装可能保险一些。
如果不是msi安装的话,在展开的目录底下运行以下命令应该也是将redis-server直接安装成Windows的自启动服务的(请参考:redis中redis.windows.conf和redis.windows-service.conf文件的区别;https://zhuanlan.zhihu.com/p/58944835)。
redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis
运行Redis-x64-3.2.100.msi(一路缺省按‘确定’即可,安装过程中我勾选了以下两处,没有必然性,小白自我心安策略而已^-^).
安装完后安装目录下是这个样子,其实与下载的压缩包展开后完全一样(这也证实了两种方式其实是等价的)。
Redis-server运行必须带配置文件选项。反正不带的话它会抱怨提醒你。。。
进入到安装目录(虽然安装目录已经加入到了系统PATH中去了,但是PATH不管配置文件参数的搜索,所以要利用安装目录下的配置文件,还是得进入到安装目录下),打开cmd窗口(我不知道以管理员身份运行是不是必须的,但是这样总保险一些吧^-^),运行“redis-server.exe redis.windows.conf”,会看到以下画面。这就表示启动了redis server了。
按Ctrl-C就关掉redis-server了(或者直接关掉这个cmd窗口,但是这样的话就看不到下面这个画面了):
这里介绍两种方式。
第一种是运行redis-cli启动客户端来与server交互。
如上图所示,从redis-cli界面可以给redis-server发送命令。
第一条set命令失败了,是因为我手欠把配置文件改成了要求密码^-^. 后面先执行auth命令向server发送密码请求连接,然后再set然后get,get查询得到的信息与set所设置的信息相同,说明client与server通话成功。
这种方式更有实际应用价值吧,毕竟在实用中更可能是用脚本的方式进行数据库的访问。这种方式要求先安装python的redis模块(pip/conda install redis都可以),安装完后(在server启动的条件下),执行以下脚本:
import redis
if __name__ == "__main__":
r = redis.Redis(host="localhost",port=6379,password=PASSWORD,decode_responses=True)
#r = redis.Redis(host="192.168.1.67",port=6379,password=PASSWORD,decode_responses=True) # NG...But why?
r.set("msg","connect to redis_server sucessfully!")
print(r.get("msg"))
如果get命令打印出来的信息与set所设置的信息相同,就表示测试成功。
但是以上有一个遗留问题,host必须设置成”localhost”。像下面这条语句一样设置成我本机的局域IP地址的话,就连接不了,不知道为什么?有哪位大佬知道在评论区指教一二不胜感激!
我在头一天安装并测试完后,第二天重启机器后按部就班地到redis安装目录下去执行redis-server,结果,没有看到熟悉的画面,顿时觉得有点慌神了。。。
辗转调查啊。。。最终我猜测是因为我用msi安装,所以把redis-server设定成windows自动启动的服务了(前面提到过),但是这个自启动要在计算机重新启动后生效。所以呢,前一天在安装后后在终端执行以上命令会出现正常的启动画面,但是计算机重启后redis自动启动了,再在命令行执行这个命令已经属于多余的了。为了验证这个猜测,我先关闭掉redis服务:
此电脑(右键点击)-->管理-->服务和应用程序-->服务
找到redis服务并停用,然后再从命令行重新执行以上命令,又看到了熟悉的画面,心中觉得好温暖^-^.
不过知道了这一点后,以后就不必再额外地去启动redis服务了。
细致的小伙伴们可能已经注意到了,在安装目录下有两个配置文件:
redis.windows.conf
redis.windows-services.conf
为什么要有两个呢,它们有什么区别?用对比工具对比的话,你会发现两者并没有什么本质的区别。但是(在redis没有被自动启动时。可以通过任务管理器确认没有redis在运行)从命令行用两个配置文件执行redis-server.exe的话却又有点区别。
运行redis-server.exe redis.windows.conf马上会蹦出以上哪个熟悉的启动画面。
运行redis-server.exe redis.windows-service.conf则就是以下这个冷冰冰的画面:
但是运行redis-cli去访问server的话,确实又可以,后面这条命令也是可以的。只不过后者沉默了一点点而已。
进一步调查发现两者确实是有区别的(可能正是这个区别导致后者的运行是寡言少语的^-^),区别就是其实后者是正宫,windows自动启动redis服务时是用redis.windows-service.conf(如下图所示)。相应地,redis.windows.conf可以理解为是用户自定义的配置文件的一个template,用于从命令行手动启动redis服务时使用的配置文件(?)。至少这样从逻辑上貌似说得通了。
此电脑(右键点击)-->管理-->服务和应用程序-->服务,选中redis然后点选属性:
以上概要性地介绍了redis在windows安装并部署成自动服务的一些基础知识。有关redis服务的高级配置已经各种使用命令有待进一步学习总结。。。