Redis的探究


之前大四時候實習的公司有使用過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:\tools\redis-2.4.5-win32-win64\64bit\RedisService.exe(RedisService.exe路徑)\" \"d:\tools\redis-2.4.5-win32-win64\64bit\redis.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 的)

 

 

寫到這了,休息一下繼續下午上班了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM