redis資料庫基礎之基本操作
1,簡介:
redis,k-v資料庫,可以包含的資料類型有字串,雜湊,鏈表,集合,有序集合。 資料類型支援push/pop,add/remove,取交集,並集,差集等操作 一般redis可以儲存在記憶體中,也可以周期性的把更新的資料寫 入磁碟,或者是把修改的操作寫入記錄檔案(日誌)
2,安裝和簡單linux下的操作
下載地址:https://redis.io/download安裝方法官網有
redis服務簡易操作 (預設連接埠6379)
1,啟動redis ./usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf//需要指定設定檔2,用戶端串連: ./usr/local/redis/bin/redis-cli3,停止redis pkill /usr/local/redis/bin/redis-server shutdown /usr/local/redis/bin/redis-server4,查看進程啟動:ps -ef | grep redis 5,查看連接埠:netstat -tunpl | grep 6379
3,資料類型
1,string
字串類型,二進位安全,可以存放任何資料,序列化對象,圖片的二進位流等
操作方法(某些和memcache類似)set //設定一個值setnx //設定一個值,key存在返回0,不存在則設定setex //設定索引值對的同事加時間setrange//設定替換mset //設定多個值msetnx //設定多個值,存在返回0,不存在則設定get getset //返回舊值,設定新值getrange//返回部分mget //返回多個incr //返回同時自增incrby //返回同時設定增量decrdecrbyappend //追加到後面strlen //返回長度
執行個體: 127.0.0.1:6379> set name niushaogang OK 127.0.0.1:6379> get name "niushaogang" 127.0.0.1:6379> add name (error) ERR unknown command 'add' 127.0.0.1:6379> add name niushaojing (error) ERR unknown command 'add' 127.0.0.1:6379> get name "niushaogang" 127.0.0.1:6379> append name niushaojing (integer) 22 127.0.0.1:6379> get name "niushaogangniushaojing" 127.0.0.1:6379> prepend name niuyongding (error) ERR unknown command 'prepend' 127.0.0.1:6379> prepend 1 (error) ERR unknown command 'prepend' 127.0.0.1:6379> prepend name 1 (error) ERR unknown command 'prepend' 127.0.0.1:6379> get name "niushaogangniushaojing" 127.0.0.1:6379> get id (nil) 127.0.0.1:6379> get ni (nil) 127.0.0.1:6379> get name "niushaogangniushaojing" 127.0.0.1:6379> setns name sun (error) ERR unknown command 'setns' 127.0.0.1:6379> setnx name sun (integer) 0 127.0.0.1:6379> setex haircolor 10 red OK 127.0.0.1:6379> get haircolor "red" 127.0.0.1:6379> get haircolor (nil) 127.0.0.1:6379> get name "niushaogangniushaojing" 127.0.0.1:6379> set name (error) ERR wrong number of arguments for 'set' command 127.0.0.1:6379> set name niushao OK 127.0.0.1:6379> get name "niushao" 127.0.0.1:6379> setrange name 3 gang (integer) 7 127.0.0.1:6379> get name "niugang" 127.0.0.1:6379> mset name1 niushao name2 gangshao OK 127.0.0.1:6379> get name1 "niushao" 127.0.0.1:6379> get name2 "gangshao" 127.0.0.1:6379> mset name 3 ganggge (error) ERR wrong number of arguments for MSET 127.0.0.1:6379> mset name3 gangge OK 127.0.0.1:6379> get name3 "gangge" 127.0.0.1:6379> get name "niugang" 127.0.0.1:6379> getset name niu "niugang" 127.0.0.1:6379> get name "niu" 127.0.0.1:6379> getrange name 2 (error) ERR wrong number of arguments for 'getrange' command 127.0.0.1:6379> get range 0 2 (error) ERR wrong number of arguments for 'get' command 127.0.0.1:6379> getrange name 0 2 "niu" 127.0.0.1:6379> getrange name 0 1 "ni" 127.0.0.1:6379> mget name name1 name2 1) "niu" 2) "niushao" 3) "gangshao" 127.0.0.1:6379> mset id1 3 id2 6 id3 9 OK 127.0.0.1:6379> get id1 "3" 127.0.0.1:6379> mget id1 id2 id3 1) "3" 2) "6" 3) "9" 127.0.0.1:6379> incr id1 (integer) 4 127.0.0.1:6379> incr id2 (integer) 7 127.0.0.1:6379> incr id2 (integer) 8 127.0.0.1:6379> incr id2 (integer) 9 127.0.0.1:6379> incr id2 (integer) 10 127.0.0.1:6379> incr id5 (integer) 1 127.0.0.1:6379> incr id5 (integer) 2 127.0.0.1:6379> incrby id5 10 (integer) 12 127.0.0.1:6379> incrby id5 10 (integer) 22 127.0.0.1:6379> decr id5 (integer) 21 127.0.0.1:6379> decr id5 (integer) 20 127.0.0.1:6379> decrby id5 5 (integer) 15 127.0.0.1:6379> append id5 niushao (integer) 9 127.0.0.1:6379> get id5 "15niushao" 127.0.0.1:6379> strlen id5 (integer) 9 127.0.0.1:6379>
2,hashes 是一個欄位和值的映射表。添加刪除都是0,1.適用儲存物件,
操作方法: hset myhash key value//設定一個值 hmset myhash key1 value1 key2 value2 …… hget myhash key hmget //hmget myhash key1 key2 key3 hsetnx hincrby myhash key num //自增某個值 hexists //錯在某個鍵 hlen //有多少個鍵 hdel //刪除 hkeys //輸出所有的鍵 hvals //輸出所有的值 hgetall //輸出所有的鍵和值
執行個體: 127.0.0.1:6379> hset names:001 niushaogang (error) ERR wrong number of arguments for 'hset' command 127.0.0.1:6379> hset names:001 name niushaogang (integer) 1 127.0.0.1:6379> get names (nil) 127.0.0.1:6379> hget name (error) ERR wrong number of arguments for 'hget' command 127.0.0.1:6379> hget names::001 (error) ERR wrong number of arguments for 'hget' command 127.0.0.1:6379> hget names::001 name (nil) 127.0.0.1:6379> hget names:001 name "niushaogang" 127.0.0.1:6379> hsetnx names:002 name niushaojing (integer) 1 127.0.0.1:6379> hset names:002 name (error) ERR wrong number of arguments for 'hset' command 127.0.0.1:6379> hget names:002 name "niushaojing" 127.0.0.1:6379> hmset names:003 name niushao sex nan age 20 OK 127.0.0.1:6379> hget names:003 sex "nan" 127.0.0.1:6379> hmget names:003 name sex age 1) "niushao" 2) "nan" 3) "20" 127.0.0.1:6379> hincrby names:003 age 5 (integer) 25 127.0.0.1:6379> hget names:003 age "25" 127.0.0.1:6379> hexists names age (integer) 0 127.0.0.1:6379> hexists names:003 age (integer) 1 127.0.0.1:6379> hlen names:003 (integer) 3 127.0.0.1:6379> hlen names:001 (integer) 1 127.0.0.1:6379> hlen names (integer) 0 127.0.0.1:6379> hdel names:003 sex (integer) 1 127.0.0.1:6379> hkeys names:003 1) "name" 2) "age" 127.0.0.1:6379> hvals names:003 1) "niushao" 2) "25" 127.0.0.1:6379> hgetall names:003 1) "name" 2) "niushao" 3) "age" 4) "25" 127.0.0.1:6379>
3,list //鏈表,常用語棧和隊列
操作方法 lpush //從頭部壓入一個元素 lrange //lrange list 0 -1 從頭部開始查看一個list rpush //從尾部壓入一個元素 linsert //從特定地方壓入一個元素 linsert list before list-value list-value Lset //按照下標換掉一個已經存在的元素 lrem //根據索引值移除後面相等的元素 lrem list key list-value-del ltrim //移除給定索引值包圍外的值 ltrim list key1 key2 lpop //從頭移除一個值,並返回 rpop //移尾除一個值,並返回 rpoplpush //操作連個list,移除第一個最後的值,壓入後一個第一個值 llen //返回list元素的個數
執行個體: [root@VM_173_6_centos bin]# ./redis-cli 127.0.0.1:6379> lpush list1 world (integer) 1 127.0.0.1:6379> lpush list1 hello (integer) 2 127.0.0.1:6379> lrange list1 0 -1 1) "hello" 2) "world" 127.0.0.1:6379> lrange list1 -1 0 (empty list or set) 127.0.0.1:6379> lpush list1 niushaogang (integer) 3 127.0.0.1:6379> lrange list1 0 -1 1) "niushaogang" 2) "hello" 3) "world" 127.0.0.1:6379> rpush list1 niushao (integer) 4 127.0.0.1:6379> lrange list1 -1 0 (empty list or set) 127.0.0.1:6379> lrange list1 0 -1 1) "niushaogang" 2) "hello" 3) "world" 4) "niushao" 127.0.0.1:6379> rpush list gang (integer) 1 127.0.0.1:6379> rpush list1 gang (integer) 5 127.0.0.1:6379> lrange list1 0 -1 1) "niushaogang" 2) "hello" 3) "world" 4) "niushao" 5) "gang" 127.0.0.1:6379> linset list1 before niushao gangshao (error) ERR unknown command 'linset' 127.0.0.1:6379> linsert list1 before niushao gangshao (integer) 6 127.0.0.1:6379> lrange list 0 -1 1) "gang" 127.0.0.1:6379> lrange list1 0 -1 1) "niushaogang" 2) "hello" 3) "world" 4) "gangshao" 5) "niushao" 6) "gang" 127.0.0.1:6379> Lset list1 0 gangge OK 127.0.0.1:6379> lrange list1 0 -1 1) "gangge" 2) "hello" 3) "world" 4) "gangshao" 5) "niushao" 6) "gang" 127.0.0.1:6379> lrem list1 1 world (integer) 1 127.0.0.1:6379> lrange list1 0 -1 1) "gangge" 2) "hello" 3) "gangshao" 4) "niushao" 5) "gang" 127.0.0.1:6379> ltrim list1 2 4 OK 127.0.0.1:6379> lrange list1 0 -1 1) "gangshao" 2) "niushao" 3) "gang" 127.0.0.1:6379> lpop list1 "gangshao" 127.0.0.1:6379> rpop list1 "gang" 127.0.0.1:6379> rpopllpush list1 ganggedingtianlidi (error) ERR unknown command 'rpopllpush' 127.0.0.1:6379> rpoplpush list1 ganggenulichenggong "niushao" 127.0.0.1:6379> lrange list1 0 -1 (empty list or set) 127.0.0.1:6379> lrange list1 0 -1 (empty list or set) 127.0.0.1:6379> lrange list1 0 -1 (empty list or set) 127.0.0.1:6379> lrange list1 0 -1 (empty list or set) 127.0.0.1:6379> llen list (integer) 1 127.0.0.1:6379> llen list1 (integer) 0 127.0.0.1:6379> lpush list1 niu (integer) 1 127.0.0.1:6379> lpush list1 gang (integer) 2 127.0.0.1:6379> lpush list1 shao (integer) 3 127.0.0.1:6379> lrange list1 0 -1 1) "shao" 2) "gang" 3) "niu" 127.0.0.1:6379> lpoplpush list list1 (error) ERR unknown command 'lpoplpush' 127.0.0.1:6379> rpoplpush list list1 "gang" 127.0.0.1:6379> lrange list1 0 -1 1) "gang" 2) "shao" 3) "gang" 4) "niu" 127.0.0.1:6379> llen list1 (integer) 4
4,set //無序集合
操作方法: sadd 加入元素 smember 查看元素 srem 移除指定元素 spop 隨機刪除元素 sdiff 取差集 sdiffstore 取差集並儲存 sinter 取交集 sinterstore 取交集並儲存 sunion 取並集 sunionstore 儲存並集 smove 移動元素到另一個集合 scard 返回集合中元素的數量 sismember 檢查是不是集合的成員 srandmember 隨機輸出一個元素
操作執行個體: 127.0.0.1:6379> sadd sets1 niu (integer) 1 127.0.0.1:6379> asdd sets1 shao (error) ERR unknown command 'asdd' 127.0.0.1:6379> sadd sets1 shao (integer) 1 127.0.0.1:6379> sadd sets1 gang (integer) 1 127.0.0.1:6379> sadd sets1 shao (integer) 0 127.0.0.1:6379> smembers sets1 1) "gang" 2) "shao" 3) "niu" 127.0.0.1:6379> srem gang (error) ERR wrong number of arguments for 'srem' command 127.0.0.1:6379> srem sets1 gang (integer) 1 127.0.0.1:6379> spop sets1 "shao" 127.0.0.1:6379> smembers sets1 1) "niu" 127.0.0.1:6379> sadd sets1 one (integer) 1 127.0.0.1:6379> sadd sets1 two (integer) 1 127.0.0.1:6379> sadd sets1 three (integer) 1 127.0.0.1:6379> sadd sets1 four (integer) 1 127.0.0.1:6379> sadd sets2 four (integer) 1 127.0.0.1:6379> sadd sets2 five (integer) 1 127.0.0.1:6379> sdiff sets1 sets2 1) "one" 2) "three" 3) "niu" 4) "two" 127.0.0.1:6379> sdiff sets2 sets1 1) "five" 127.0.0.1:6379> sdiffstore sets3 sets1 sets2 (integer) 4 127.0.0.1:6379> smember sets3 (error) ERR unknown command 'smember' 127.0.0.1:6379> smembers sets3 1) "one" 2) "three" 3) "niu" 4) "two" 127.0.0.1:6379> sinter sets1 sets2 1) "four" 127.0.0.1:6379> sunion sets1 sets2 1) "two" 2) "niu" 3) "four" 4) "one" 5) "five" 6) "three" 127.0.0.1:6379> smove sets1 sets2 niu (integer) 1 127.0.0.1:6379> smembers sets2 1) "four" 2) "five" 3) "niu" 127.0.0.1:6379> scard sets2 (integer) 3 127.0.0.1:6379> sinmember sets2 shao (error) ERR unknown command 'sinmember' 127.0.0.1:6379> sismember sets2 shao (integer) 0 127.0.0.1:6379> sismember sets2 niu (integer) 1 127.0.0.1:6379> srandmember sets2 "niu" 127.0.0.1:6379> srandmember sets2 "niu" 127.0.0.1:6379> srandmember set