安裝Redis
$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz $ tar xzf redis-4.0.6.tar.gz $ cd redis-4.0.6 $ make #編譯完成后,redis的二進制程序在src目錄中 #啟動redis服務端 $ src/redis-server #啟動redis客戶端 $ src/redis-cli
Redis客戶端常見操作
Redis是key-value數據庫,支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
- 當value是string類型,命令包括set get setnx incr del 等。
> set server:name "fido" // 設置鍵值 OK > get server:name // 獲取鍵值 "fido" > setnx connections 10 // set if not exists OK > incr connections // 原子性增加values值 (integer) 11 > incr connections (integer) 12 > del connections // 刪除key (integer) 1 > incr connections (integer) 1
- 當value是list類型,命令包括rpush lpush llen lrange lpop rpop del 等。
> rpush friends "Alice" // 在末尾追加 (integer) 1 > rpush friends "Bob" (integer) 2 > lpush friends "Sam" // 插入到開頭 (integer) 3 > lrange friends 0 -1 // 返回列表的子集,類似切片操作 1) "Sam" 2) "Alice" 3) "Bob" > lrange friends 0 1 1) "Sam" 2) "Alice" > lrange friends 1 2 1) "Alice" 2) "Bob" > llen friends // 返回列表長度 (integer) 3 > lpop friends // 刪除並返回列表第一個元素 "Sam" > rpop friends // 刪除並返回列表最后一個元素 "Bob" > lrange friends 0 -1 1) "Alice" > del friends // 刪除key (integer) 1 // 1表示成功,0表示失敗
- 當value是set類型,命令包括sadd srem sismember smembers sunion del等。
> sadd superpowers "flight" // 添加元素 (integer) 1 > sadd superpowers "x-ray vision" (integer) 1 > sadd superpowers "reflexes" (integer) 1 > srem superpowers "reflexes" // 刪除元素 1 > sismember superpowers "flight" // 測試元素是否在集合中 (integer) 1 > sismember superpowers "reflexes" (integer) 0 > smembers superpowers // 返回集合中所有元素 1) "x-ray vision" 2) "flight" > sadd birdpowers "pecking" (integer) 1 > sadd birdpowers "flight" (integer) 1 > sunion superpowers birdpowers // 合並多個set,返回合並后的元素列表 1) "x-ray vision" 2) "flight" 3) "pecking" > del superpowers // 刪除key (integer) 1
- 當value是zset類型,命令包括 zadd zrange del等,注意給value一個編號用於排序。
> zadd hacker 1940 "Alan Kay" // 給value指定一個編號,比如以年份1940作為編號 (integer) 1 > zadd hacker 1906 "Grace Hopper" (integer) 1 > zadd hacker 1953 "Richard Stallman" (integer) 1 > zadd hacker 1965 "Yukihiro Matsumoto" (integer) 1 > zadd hacker 1916 "Claude Shannon" (integer) 1 > zadd hacker 1969 "Linux Torvalds" (integer) 1 > zadd hacker 1957 "Sophie Wilson" (integer) 1 > zadd hacker 1912 "Alan Turing" (integer) 1 > zrange hacker 2 4 // 切片返回有序集合中元素 1) "Claude Shannon" 2) "Alan Kay" 3) "Richard Stallman" > del hacker // 刪除key (integer) 1
- 當value是hash類型,hash類型可以理解為字典,需要給value指定一個field用於映射,命令包括hset hmset hget hgetall hdel hincrby del 等。
> hset user:1000 name "John Smith" // 給value指定一個field,比如name (integer) 1 > hset user:1000 email "john.smith@example.com" (integer) 1 > hset user:1000 password "s3cret" (integer) 1 > hgetall user:1000 // 獲得hash表中所有成員,包括field和value 1) "name" 2) "John Smith" 3) "email" 4) "john.smith@example.com" 5) "password" 6) "s3cret" > hmset user:1001 name "Mary Jones" password "hidden" email "mjones@example.com" // 設置多個field和value OK > hget user:1001 name // 根據field獲取value "Mary Jones" > hset user:1000 visits 10 // field可以映射到數字值 (integer) 1 > hincrby user:1000 visits 1 // 原子性增加value的值,增加1 (integer) 11 > hincrby user:1000 visits 10 // 增加10 (integer) 21 > hdel user:1000 visits // 刪除field及其value (integer) 1 > hincrby user:1000 visits 1 (integer) 1 > del user:1000 // 刪除key (integer) 1
- 設置和查看key的生命周期,key過期會被自動刪除,命令包括expire ttl 等。
> set resource:lock "Redis Demo" OK > expire resource:lock 120 // 設置生命周期為120s (integer) 1 > ttl resource:lock // 查看當前生命周期還剩多少時間 (integer) 109 > ttl resource:lock // 120s后查看,返回-2表示已過期或不存在 (integer) -2 > set resource:lock "Redis Demo 2" OK > ttl resource:lock // 返回-1表示永不過期 (integer) -1