之前大四时候实习的公司有使用过Redis,不过那时所有配置均由主管完成了,而我也只是处于能使用的阶段。
时隔1年多,近期回想起这货,在研究中,想把它整合进现在公司的网站系统中,做做数据快照(已完成)和数据缓存,现在把自己学习的一个过程写下来。
首先声明,我用的是windows系统开发,所以以下所有的文字只和windows系统有关,其他系统的没研究过!
Redis的简介,度娘一搜一大把,这里就不做阐述了。
首先要先下载Redis,地址:https://code.google.com/p/servicestack/wiki/RedisWindowsDownload
(至BZ写这篇随笔时,使用的最新版本为2.4.5,以下介绍均以此版本为基准)
解压下载的Redis,选择对应的系统版本:
其中:
redis-server.exe:服务程序
redis-check-dump.exe:本地数据库检查
redis-check-aof.exe:更新日志检查
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询
redis.conf:配置文件
配置文件
可另见配置文件说明中文版:http://my.oschina.net/liuxd/blog/61034
打开服务端
打开redis-server.exe,默认使用默认的配置,也可自己指定配置文件(打开cmd输入命令行):
(以放在D盘Redis目录下为例,依次输入)
d:
cd redis
redis-server xxx.conf(xxx.conf为配置文件名)
打开命令行操作工具
打开redis-cli,默认使用127.0.0.1:6379,同服务端一样也可自己指定:
redis-cli -h 127.0.0.1 -p 6379(Host、Port可自己指定)
redis命令可参考:http://redis.io/commands
中文版:https://redis.readthedocs.org/en/latest/
在系统中以服务的形式运行服务端(无需一直打开redis-server)
到 https://github.com/kcherenkov/redis-windows-service 下载redis-windows-service,下载后,用visual studio打开并编译,在bin文件夹中找到生成的RedisService.exe文件,复制到同redis-server.exe同一个文件夹中。
打开cmd,创建服务:
sc create Redis start= auto DisplayName= Redis binpath= ""d: ools edis-2.4.5-win32-win6464bitRedisService.exe(RedisService.exe路径)" "d: ools edis-2.4.5-win32-win6464bit edis.conf(redis.conf路径)""
创建成功后,每次开机均会自动启动,可在服务列表中自己设置
RedisAdminUI
asp.net版本的RedisUI,可实时查看Redis服务情况及数据情况。
下载地址:https://code.google.com/p/servicestack/downloads/detail?name=RedisAdminUI.zip&can=2&q=
部署到IIS,使用v2.0集成程序池
.Net Redis
项目中引用ServiceStack dll,可使用NuGet获取,亦可在网上自己下载。
var rc = new RedisClient([Host], [Port]);
然后只需要把Redis命令看得差不多了,这个也就会用了。我自己只用了里面几个最基本最常用的,其他一些复杂的,都是直接调用这几个方法:
SetEntry、GetValue
AddItemToList、AddRangeToList、GetAllItemsFromList、RemoveItemFromList
AddItemToSet、AddRangeToSet、GetAllItemsFromSet、RemoveItemFromSet
AddItemToSortedSet、GetAllItemsFromSortedSet、GetAllItemsFromSortedSetDesc、GetAllWithScoresFromSortedSet、RemoveItemFromSortedSet
SetEntryInHash、SetRangeInHash、GetValueFromHash、GetValuesFromHash、GetAllEntriesFromHash、GetHashKeys、RemoveEntryFromHash
Remove、Del
目前我只实现了这几个,Get、Set方法基础参数类型均为string,我觉得就目前来说已经够用了(当然不排除以后会根据业务需要实现更多的方法)。
至于值的问题,有些列表我们是将Entity Model序列化为Json字符串进行保存的,Get的时候再将字符串反序列化成Entity Model。
Python Redis
我使用的是redis-py,当然网上也有其他的,都说了各自的好处什么的,自己选择。
到 https://github.com/andymccurdy/redis-py 下载后,安装(我安装的是Python3.3,没安装的童鞋先行安装,选择自己需要的版本)
Python脚本我们是用来做数据的初始化的,功能也简单:
import redis REDIS_HOST = '127.0.0.1' REDIS_PORT = 6379 class connection_model: 'Get Data Base Connection Model' @staticmethod def get_redis_connection(): 'Get The Redis Connection' return redis.StrictRedis(host = REDIS_HOST, port = REDIS_PORT)
获取Connection后,就可以进行各种操作了(我只是试过几个基础的方法,其他方法后面有时间再慢慢研究):
set、get、mset、mget
lpush、lrange
sadd、smembers
hset、hget、hmset、hmget、hgetall
(带"m"的都是多个/多组 get、set 的)
写到这了,休息一下继续下午上班了。