redis簡介
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
Redis是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意的對數據進行寫操作。由於完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道並接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。
Redis是一種高級的key:value存儲系統,其中value支持五種數據類型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
目前在使用的項目有新浪微博、Github、StackOverflow 等大型應用中都用其作為緩存,Redis的官網為http://redis.io/。
windows下搭建redis環境
- 下載redis對應的windows版本
Redis本身沒有提供Windows版本的,並且在Windows上也不太穩定,一般都將其部署到Linux環境下,Redis可以在其官網上下載,MSOpenTech中提供了Windows版本;也可以直接百度搜;(附件已包括安裝版本和直接操作版本)
- 安裝redis
安裝程序可以直接默認安裝,注意端口設置就行;
如果是下載的ZIP文件,解壓后可以存放到某個路徑下(比如我D:\Program Files\Redis)
- 啟用redis
啟用redis需要使用命令,首先定位到redis路徑,按住Shift+右鍵,點擊在此處用命令打開:
D:\Program Files\Redis>redis-server.exe redis.windows.conf
如果redis.windows.conf這個配置文件中的bind與port的IP和端口已經被占用,則會提示如下信息:

這時候首先查詢該端口的 pid,使用命令 【netstat -ano | findstr 6379】

根據pid查看該詳細的進程名稱,使用命令【tasklist | findstr 10628】

這個時候可以強制刪除本程序及其子進程,使用命令 【taskkill -f -t -im redis-server.exe】,也可以修改redis.windows.conf文件中port端口號,都OK

這個時候redis啟動成功了,但是不要關掉本窗口,保持端口不是關閉;當然也可以在windows服務中將redis服務設置為隨系統啟動。這樣就不用開着那個命令窗口了。

windows下簡單使用redis
重新定位到redis路徑,按住Shift+右鍵,點擊在此處用命令打開:
D:\Program Files\Redis>redis-cli.exe -h 127.0.0.1 -p 6379 然后就可以執行set 給key為city賦值: 127.0.0.1:6379> set city Shanghai 通過get可以獲取指定key為city的值了。 172.16.147.121:6379> get city

.NET下簡單使用redis
- 下載ServiceStack.Redis
和MongoDB一樣,在.NET中使用Redis其實也是使用第三方驅動,官網推薦的是使用ServiceStack.Redis (可看附件)。
- 使用ServiceStack.Redis
首先解壓ServiceStack.Redis並找到以下四個DLL

然后添加到項目引用,就可以開始簡單使用redis了;
private void button1_Click(object sender, EventArgs e) { RedisClient redisClient = new RedisClient("127.0.0.1", 6379); this.label1.Text = "獲取姓名"; this.textBox1.Text = redisClient.Get<string>("city"); this.label2.Text = "獲取年齡"; this.textBox2.Text = redisClient.Get<string>("age"); this.label3.Text = "獲取性別"; this.textBox3.Text = redisClient.Get<string>("sex"); }
