1、命令行工具
在windows上巧命令行指令,實在是令人痛苦,本人實在是受不了windows下cmd的笨,powershell的蠢,只能換一個了。
介紹一款cmd工具cmder(github上開源),地址:http://bliker.github.io/cmder/,如下圖,若有更好的工具,請大家告訴一下我,在此,先謝謝。
注:"λ"為cmder工具的標識,后邊指令凡是遇到這個字符,都可以跳過
2、官方下載redis
地址:http://redis.io/download,
官方提供linux版本,可以直接在此處下載
若是需要windows版本,官方推薦https://github.com/MSOpenTech/redis/releases。我下載的是此版本后,解壓下載包到本地目錄,如D:\Programs\redis-2.8.19
3、啟動數據庫服務。
命令:
redis-server.exe redis.windows.conf
4、測試數據庫,
下邊我們分別創建string,list,hash,至於更高級的,大家自己再深入學習吧
注意:
redis指令以回車作為結束標識,所以后邊不能加標點符號,否則會報錯,或者執行錯誤的指令(即把分號當成指令的一部分)
canssdra指令將分號作為指令結束標識,所以后邊必須加分號“;”,否則認為該指令沒有結束。
λ redis-cli.exe -h 127.0.0.1 -p 6379 127.0.0.1:6379> keys *; (empty list or set) 127.0.0.1:6379> set name 'zxh'; Invalid argument(s) 127.0.0.1:6379> set name 'zxh' OK
4.1 string
C:\Users\zxh λ cd D:\Programs\redis-2.8.19 C:\Users\zxh λ d: D:\Programs\redis-2.8.19 λ redis-cli.exe -h 127.0.0.1 -p 6379 127.0.0.1:6379> KEYS *o* (empty list or set) 127.0.0.1:6379> set username 'zxh' OK 127.0.0.1:6379> get username "zxh" 127.0.0.1:6379>
4.2 list
127.0.0.1:6379> rpush friends 'zhangsan' (integer) 1 127.0.0.1:6379> rpush friends 'lisi' (integer) 2 127.0.0.1:6379> rpush friends 'wangwu' (integer) 3 127.0.0.1:6379> lrange friends 0 -1 1) "zhangsan" 2) "lisi" 3) "wangwu" 127.0.0.1:6379>
4.3 hash
127.0.0.1:6379> hset companyaddress province bj (integer) 1 127.0.0.1:6379> hset companyaddress area haidianqu (integer) 1 127.0.0.1:6379> hset companyaddress detail zhongguancun (integer) 1 127.0.0.1:6379> hgetall companyaddress 1) "province" 2) "bj" 3) "area" 4) "haidianqu" 5) "detail" 6) "zhongguancun"
5、下載Client jar
注意,這里和cassandra不同,沒有使用jdbc驅動,原因,官方不建議使用,而且,jdbc驅動有一些問題,如,新版redis使用jdbc驅動存數據,寫入數據庫的是數據的長度 ,而非數據真實值。
cliendt jar包,我們選擇jedis,位置 branches\mvn-repo\redis\clients\jedis\2.2.0\jedis-2.2.0.jar
或者直接從這里下載 http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip(下載后直接去掉后綴名.zip就可以了)
6、使用java連接redis
記得引用上邊的jar包,以下是主要java代碼片段
//redis -> jedis //驅動地址:https://raw.githubusercontent.com/xetorthio/jedis/mvn-repo/redis/clients/jedis/2.2.0/jedis-2.2.0.jar //或者http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip import java.util.List; import redis.clients.jedis.*; public class redis_jedis { public static void main(String[] args) { Jedis redis = new Jedis("localhost", 6379);// 連接redis // String redis.del("user"); redis.set("user", "piaolingzxh"); System.out.println(redis.get("user")); // List redis.del("edu"); redis.lpush("edu", "xiaoxue", "chuzhong", "gaozhong"); List<String> eduList = redis.lrange("edu", 0, -1); for (int i = 0; i < eduList.size(); i++) { System.out.print(eduList.get(i) + "\t"); } System.out.println(); // hash key field value redis.del("home_address"); redis.hset("home_address", "province", "henan"); redis.hset("home_address", "city", "sanmenxia"); redis.hset("home_address", "detail", "what a u doing?"); List list = redis.hmget("home_address", "province", "city", "detail"); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + "\t"); } } }
到數據庫中查看結果
C:\Users\zxh λ cd D:\Programs\redis-2.8.19 C:\Users\zxh λ d: D:\Programs\redis-2.8.19 λ redis-cli.exe -h 127.0.0.1 -p 6379 127.0.0.1:6379> KEYS *o* (empty list or set) 127.0.0.1:6379> keys * 1) "home_address" 2) "edu" 3) "user" 127.0.0.1:6379> get user "piaolingzxh" 127.0.0.1:6379> lrange edu 0 -1 1) "gaozhong" 2) "chuzhong" 3) "xiaoxue" 127.0.0.1:6379> hgetall home_address 1) "province" 2) "henan" 3) "city" 4) "sanmenxia" 5) "detail" 6) "what a u doing?"
7:Scala 連接 redis
//redis -> jedis //驅動地址:https://raw.githubusercontent.com/xetorthio/jedis/mvn-repo/redis/clients/jedis/2.2.0/jedis-2.2.0.jar //或者http://files.cnblogs.com/piaolingzxh/jedis-2.2.0.jar.zip import redis.clients.jedis.Jedis; object redis_jedis { def main(args: Array[String]): Unit = { var redis = new Jedis("localhost", 6379); // String redis.del("user"); redis.set("user", "piaolingzxh"); System.out.println(redis.get("user")); // List redis.del("edu"); redis.lpush("edu", "xiaoxue", "chuzhong", "gaozhong"); redis.lrange("edu", 0, -1).toArray().foreach((str) => System.out.print(str + "\t")); System.out.println(); // hash key field value redis.del("home_address"); redis.hset("home_address", "province", "henan"); redis.hset("home_address", "city", "sanmenxia"); redis.hset("home_address", "detail", "what a u doing?"); redis.hmget("home_address", "province", "city", "detail").toArray().foreach((str) => System.out.print(str + "\t")); System.out.println(); } }
8:附redis指令集
連接操作相關的命令 quit:關閉連接(connection) auth:簡單密碼認證 持久化 save:將數據同步保存到磁盤 bgsave:將數據異步保存到磁盤 lastsave:返回上次成功將數據保存到磁盤的Unix時戳 shundown:將數據同步保存到磁盤,然后關閉服務 遠程服務控制 info:提供服務器的信息和統計 monitor:實時轉儲收到的請求 slaveof:改變復制策略設置 config:在運行時配置Redis服務器 對value操作的命令 exists(key):確認一個key是否存在 del(key):刪除一個key type(key):返回值的類型 keys(pattern):返回滿足給定pattern的所有key randomkey:隨機返回key空間的一個 keyrename(oldname, newname):重命名key dbsize:返回當前數據庫中key的數目 expire:設定一個key的活動時間(s) ttl:獲得一個key的活動時間 select(index):按索引查詢 move(key, dbindex):移動當前數據庫中的key到dbindex數據庫 flushdb:刪除當前選擇數據庫中的所有key flushall:刪除所有數據庫中的所有key 對String操作的命令 set(key, value):給數據庫中名稱為key的string賦予值value get(key):返回數據庫中名稱為key的string的value getset(key, value):給名稱為key的string賦予上一次的value mget(key1, key2,…, key N):返回庫中多個string的value setnx(key, value):添加string,名稱為key,值為value setex(key, time, value):向庫中添加string,設定過期時間time mset(key N, value N):批量設置多個string的值 msetnx(key N, value N):如果所有名稱為key i的string都不存在 incr(key):名稱為key的string增1操作 incrby(key, integer):名稱為key的string增加integer decr(key):名稱為key的string減1操作 decrby(key, integer):名稱為key的string減少integer append(key, value):名稱為key的string的值附加value substr(key, start, end):返回名稱為key的string的value的子串 對List操作的命令 rpush(key, value):在名稱為key的list尾添加一個值為value的元素 lpush(key, value):在名稱為key的list頭添加一個值為value的 元素 llen(key):返回名稱為key的list的長度 lrange(key, start, end):返回名稱為key的list中start至end之間的元素 ltrim(key, start, end):截取名稱為key的list lindex(key, index):返回名稱為key的list中index位置的元素 lset(key, index, value):給名稱為key的list中index位置的元素賦值 lrem(key, count, value):刪除count個key的list中值為value的元素 lpop(key):返回並刪除名稱為key的list中的首元素 rpop(key):返回並刪除名稱為key的list中的尾元素 blpop(key1, key2,… key N, timeout):lpop命令的block版本。 brpop(key1, key2,… key N, timeout):rpop的block版本。 rpoplpush(srckey, dstkey):返回並刪除名稱為srckey的list的尾元素,並將該元素添加到名稱為dstkey的list的頭部 對Set操作的命令 sadd(key, member):向名稱為key的set中添加元素member srem(key, member) :刪除名稱為key的set中的元素member spop(key) :隨機返回並刪除名稱為key的set中一個元素 smove(srckey, dstkey, member) :移到集合元素 scard(key) :返回名稱為key的set的基數 sismember(key, member) :member是否是名稱為key的set的元素 sinter(key1, key2,…key N) :求交集 sinterstore(dstkey, (keys)) :求交集並將交集保存到dstkey的集合 sunion(key1, (keys)) :求並集 sunionstore(dstkey, (keys)) :求並集並將並集保存到dstkey的集合 sdiff(key1, (keys)) :求差集 sdiffstore(dstkey, (keys)) :求差集並將差集保存到dstkey的集合 smembers(key) :返回名稱為key的set的所有元素 srandmember(key) :隨機返回名稱為key的set的一個元素 對Hash操作的命令 hset(key, field, value):向名稱為key的hash中添加元素field hget(key, field):返回名稱為key的hash中field對應的value hmget(key, (fields)):返回名稱為key的hash中field i對應的value hmset(key, (fields)):向名稱為key的hash中添加元素field hincrby(key, field, integer):將名稱為key的hash中field的value增加integer hexists(key, field):名稱為key的hash中是否存在鍵為field的域 hdel(key, field):刪除名稱為key的hash中鍵為field的域 hlen(key):返回名稱為key的hash中元素個數 hkeys(key):返回名稱為key的hash中所有鍵 hvals(key):返回名稱為key的hash中所有鍵對應的value hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對應的value
參考:http://www.cnblogs.com/oubo/archive/2011/09/07/2394568.html