Redis系列(一)-redis簡介

一、Redis簡介

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,
並提供多種語言的API。

redis是一個key-value存儲系統。與Memcached類似,它支持存儲的value類型相對更多,包括5種數據類型。
redis和memcached一樣,爲了保證效率,數據都是緩存在內存中。redis會週期性的把更新的數據寫入
磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

二、Redis安裝

redis安裝,參考博客: redis安裝

注:redis修改配置文件後啓動時,要加載配置文件一起啓動,redis後臺啓動: /usr/local/bin/redis-server /usr/local/etc/redis.conf &

三、redis數據結構

redis提供五種數據類型:string,hash,list,set及zset(sorted set)

  • 1.string
    String類型的數據存儲字符串、整數或者浮點數 ,操作如下:
 127.0.0.1:6379> set redisString yang  
OK
127.0.0.1:6379> get redisString
"yang"
127.0.0.1:6379> incr redisString
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> del num
(integer) 1
127.0.0.1:6379> get num
(nil)
127.0.0.1:6379> 


設置鍵值對:set key value
根據鍵獲取值:get key
刪除鍵:del key
將 key 中儲存的數字值增一:incr key該操作值必須是int類型的

  • 2.hash
    Redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。

127.0.0.1:6379> hset yang name 'hello' age 10
(integer) 1
127.0.0.1:6379> hget yang name
"hello"
127.0.0.1:6379> hget yang age
"10"
127.0.0.1:6379> hgetall yang
1) "name"
2) "hello"
3) "description"
4) "hset"
5) "visitors"
6) "1000"
7) "age"
8) "10"

設置鍵值對:hset key param1 value1 param2 value2
獲取hash值:hget key param1
獲取所有值:hgetall key

  • 3.list
127.0.0.1:6379> Lpush lyang theone
(integer) 1
127.0.0.1:6379> lpush lyang thetwo
(integer) 2
127.0.0.1:6379> lpush lyang thethree
(integer) 3
127.0.0.1:6379> lrange lyang 0 3
1) "thethree"
2) "thetwo"
3) "theone"
127.0.0.1:6379> lrange lyang 0 2
1) "thethree"
2) "thetwo"
3) "theone"
127.0.0.1:6379> lrange lyang 1 2
1) "thetwo"
2) "theone"
127.0.0.1:6379> rpush lyang right
(integer) 4
127.0.0.1:6379> lrange 0 3
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange lyang 0 3
1) "thethree"
2) "thetwo"
3) "theone"
4) "right"
127.0.0.1:6379> 

LPUSH(RPUSH) 將給定值推入列表的左端(右端)
LPOP(RPOP) 從列表的左端(右端)彈出一個值,並返回被彈出的值
LINDEX 獲取列表在給定位置上的單個值
LRANGE 獲取列表在給定範圍上的所有值

  • 4.set (無序集合,去重)

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味着集合中不能出現重複的數據。

Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是 O(1)。

127.0.0.1:6379> sadd set1 test
(integer) 1
127.0.0.1:6379> sadd set1 test1
(integer) 1
127.0.0.1:6379> sadd set1 test2
(integer) 1
127.0.0.1:6379> smembbers set1
(error) ERR unknown command 'smembbers'
127.0.0.1:6379> smembers set1
1) "test2"
2) "test1"
3) "test"
127.0.0.1:6379> sadd set1 test
(integer) 0
127.0.0.1:6379> smembers set1
1) "test2"
2) "test1"
3) "test"
127.0.0.1:6379> sadd set1 hello
(integer) 1
127.0.0.1:6379> sadd set1 xulie
(integer) 1
127.0.0.1:6379> smembers set1
1) "hello"
2) "test2"
3) "test1"
4) "test"
5) "xulie"
127.0.0.1:6379> 

SADD命令返回1表示成功添加到集合中,返回0表示該元素已存在於集合中.

  • 5.zset(有序集合,去重排序)

有序集合和散列一樣,都用於存儲鍵值對:其中有序集合的每個鍵稱爲成員(member),都是獨一無二的,而有序集合的每個值稱爲分值(score),都必須是浮點數。有序集合是Redis裏面唯一既可以根據成員訪問元素(這一點和散列一樣),又可以根據分值以及分值的排列順序來訪問元素的結構。

127.0.0.1:6379> zadd test 10 test1
(integer) 1
127.0.0.1:6379> zadd test 100 test2
(integer) 1
127.0.0.1:6379> zadd test 100 test2
(integer) 0
127.0.0.1:6379> zadd test101 test2
(error) ERR wrong number of arguments for 'zadd' command
127.0.0.1:6379> zadd test 101 test2
(integer) 0
127.0.0.1:6379> zrange test 0 100
1) "test1"
2) "test2"
127.0.0.1:6379> zrangebyscore test 0 10
1) "test1"
127.0.0.1:6379> 

l
在嘗試 向有序集合添 加元素的時候,ZADD命令會返回新添加元素的數量;ZRANGE命令獲取有序集合包含的所有元素,這些元素會按照分值進行排序,Python客戶端會將這些分值轉換成浮點數;ZRANGEBYSCORE命令也可以根據分值來獲取有序集合的其中一部分元素;ZREM命令在移除有序集合元素的時候,命令會返回被移除元素的數量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章