兄弟連學python---Redis基礎知識

來源:互聯網
上載者:User

標籤:card   cache   emc   簡單   雜湊表   redis   重複   srand   tran   

Redis 資料類型
Redis支援五種資料類型:    string(字串)    list(列表)    set(集合)    zset(有序集合)    hash(雜湊)
String(字串)
string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。string類型是二進位安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的對象 。string類型是Redis最基本的資料類型,一個鍵最大能儲存512MB。
執行個體
redis 127.0.0.1:6379> SET name "runoob"OKredis 127.0.0.1:6379> GET name"runoob"在以上執行個體中我們使用了 Redis 的 SET 和 GET 命令。鍵為 name,對應的值為 runoob。注意:一個鍵最大能儲存512MB。--------------------------------------------   set 命令:設定一個鍵和值,鍵存在則只覆蓋,返回ok   > set 鍵  值       例如: >set name zhangsan?   get 命令:擷取一個鍵的值,傳回值   > get 鍵     例如:>get name?   setnx命令:設定一個不存在的鍵和值(防止覆蓋),   > setnx 鍵 值      若鍵已存在則返回0表示失敗?   setex命令:設定一個指定有效期間的鍵和值(單位秒)   > setex 鍵 [有效時間] 值     例如: >setex color 10 red    不寫有效時間則表示永久有效,等價於set?   setrange命令:替換子字串 (替換長度由子子串長度決定)   > setrange 鍵 位置 子字串   > setrange name 4 aa  將name鍵對應值的第4個位置開始替換?   mset命令:大量設定鍵和值,成功則返回ok   > mset 鍵1 值1 鍵2 值2 鍵3 值3 ....?   msetnx命令:大量設定不存在的鍵和值,成功則返回ok   > msetnx 鍵1 值1 鍵2 值2 鍵3 值3 ....?   getset命令:擷取原值,並設定新值   > getset 鍵 新值?   getrange命令:擷取指定範圍的值   >getrange 鍵 0 4     //擷取指定0到4位置上的值?   mget命令: 批量擷取值   >mget 鍵1 鍵2 鍵3....?   incr命令: 指定鍵的值做加加操作,返回加後的結果。   >  鍵        例如: >incr kid   incrby命令: 設定某個鍵加上指定值   > incrby 鍵 m    //其中m可以是正整數或負整數?   decr命令: 指定鍵的值做減減操作,返回減後的結果。   > decr 鍵        例如: >decr kid   decrby命令: 設定某個鍵減上指定值   > decrby 鍵 m    //其中m可以是正整數或負整數?   append命令:給指定key的字串追加value,返回新字串值的長度   >append 鍵 追加字串?   strlen求長度    >strlen 鍵名   //返回對應的值。      del命令:刪除指定鍵,成功則返回1   > del 鍵

 

List(列表)
Redis 列表是簡單的字串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
執行個體
redis 127.0.0.1:6379> lpush runoob redis(integer) 1redis 127.0.0.1:6379> lpush runoob mongodb(integer) 2redis 127.0.0.1:6379> lpush runoob rabitmq(integer) 3redis 127.0.0.1:6379> lrange runoob 0 101) "rabitmq"2) "mongodb"3) "redis"redis 127.0.0.1:6379>列表最多可儲存 232 - 1 元素 (4294967295, 每個列表可儲存40多億)。?--------------------------------------------   list即可以作為“棧”也可以作為"隊列"。操作: >lpush list1 "world"  //在list1頭部壓入一個字串 >lpush list1 "hello"  // 在list1頭部壓入一個字串 >lrange list1 0 -1  //擷取list1中內容    0:表示開頭  -1表示結尾。? >rpush list2 "world"  //在list2尾部壓入一個字串 >rpush list2 "hello"  // 在list2尾部壓入一個字串 >lrange list2 0 -1  //擷取list2中內容    0:表示開頭  -1表示結尾。? >linsert list2 before hello there 在key對應list的特定位置前或後添加字串? >lset list2 1 "four" 修改指定索引位置上的值? >lrem list2 2 "hello"  //刪除前兩個hello值 >lrem list2 -2 "hello" //刪除後兩個hello值 >lrem list2 0 "hello"  //刪除所有hello值? >ltrim mylist8 1 3 //刪除此範圍外的值? >lpop list2   //從list2的頭部刪除元素,並返回刪除元素 >rpop list2   //從list2的尾部刪除元素,並返回刪除元素 >rpoplpush list1 list2 //將list1的尾部一個元素移出到list2頭部。並返回? >lindex list2 1 //返回list2中索引位置上的元素 >llen list2 //返回list2上長度
Set(無序集合)
Redis的Set是string類型的無序集合。集合是通過雜湊表實現的,所以添加,刪除,尋找的複雜度都是O(1)。sadd 命令添加一個string元素到,key對應的set集合中,成功返回1,如果元素已經在集合中返回0,key對應的set不存在返回錯誤。sadd key member
執行個體
redis 127.0.0.1:6379> sadd runoob redis(integer) 1redis 127.0.0.1:6379> sadd runoob mongodb(integer) 1redis 127.0.0.1:6379> sadd runoob rabitmq(integer) 1redis 127.0.0.1:6379> sadd runoob rabitmq(integer) 0redis 127.0.0.1:6379> smembers runoob?1) "rabitmq"2) "mongodb"3) "redis"注意:以上執行個體中 rabitmq 添加了兩次,但根據集合內元素的唯一性,第二次插入的元素將被忽略。集合中最大的成員數為 232 - 1(4294967295, 每個集合可儲存40多億個成員)。?------------------------------- >sadd myset "hello" //向myset中添加一個元素  成功返回1,失敗(重複)返回0? >smembers myset //擷取myset中的所有元素(結果是無序的)? >srem myset "one" //從myset中刪除一個one  成功返回1,失敗(不存在)返回0? >spop myset //隨機返回並刪除myset中的一個元素 >srandmember myset //隨機擷取myset中的一個元素,但是不刪除? > smove myset1 myset2 zhangsan:將myset1中zhangsan移動到myset2中 > scard myset1 返回myset1的個數 > sismember myset zhangsan:判斷張三是否在myset中? >sdiff myset1 myset2 //返回兩個集合的差集 以myset1為標準,擷取myset2中不存在的。 >sdiffstore dstset myset1 myset2 ...// 返回所有集合的差集,並儲存到dstset中? >sinter myset1 myset2 myset3... // 返回N個集合中的交集 >sinterstore dstset myset1 myset2 ... // 返回N個集合的交集並儲存到dstset中? > sunion myset1 myset2 ...//返回所有集合的並集 > sunionstore dstset myset1 myset2// 返回所有集合的並集,並儲存到dstset中
zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。zadd 命令添加元素到集合,元素在集合中存在則更新對應scorezadd key score member 
執行個體
redis 127.0.0.1:6379> zadd runoob 0 redis(integer) 1redis 127.0.0.1:6379> zadd runoob 0 mongodb(integer) 1redis 127.0.0.1:6379> zadd runoob 0 rabitmq(integer) 1redis 127.0.0.1:6379> zadd runoob 0 rabitmq(integer) 0redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 1000?1) "redis"2) "mongodb"3) "rabitmq"?----------------------------------------? > zadd zset 1 one 向zset中添加one,排序為1排序 > zrem zset one:刪除zset中one? > zincrby zset 2 one:如果one存在,則順序增加2,如果one不存在,那麼就是2? > zrank zset one:返回one在zset中排名(從小到大的排序) > zrevrank zset one:返回one在zset中排名(從大到小的排序)? > zrange zset 0 -1 withscores:根據score排序(根據score從小到大排序) > zrevrange zset 0 -1 withscores:根據score排序(根據score從大到小排序)? > zrangebyscore zset 2 3 withscores:返回集合中score在給定區間的元素(包含2和5) > zcount zset 2 3:返回集合中給定區間的數量 > zcard zset:返回集合中元素的個數 > zscore zset one:返回one元素的score > zremrangebyrank zset 3 3:刪除集合中排名在給定區間的元素 > zremrangebyscore zset 1 2:將zset中從小到大排序結果的score在1-2之間的刪除
Hash(雜湊)
Redis hash 是一個索引值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於儲存物件。
執行個體
127.0.0.1:6379> HMSET user:1 username runoob password runoob points 200OK127.0.0.1:6379> HGETALL user:11) "username"2) "runoob"3) "password"4) "runoob"5) "points"6) "200"以上執行個體中 hash 資料類型儲存了包含使用者指令碼資訊的使用者物件。 執行個體中我們使用了 Redis HMSET, HGETALL 命令,user:1 為索引值。每個 hash 可以儲存 232 -1 索引值對(40多億)。------------------------------------------hset命令:設定一個雜湊表的鍵和值  >hset hash名 鍵  值  如:>hset user:001 name zhangsan  hget命令: 擷取執行雜湊名中的鍵對應值?  hsetnx命令:設定一個雜湊表中不存在的鍵和值  >hsetnx hash名 鍵  值  //成功返回1,失敗返回0  如:>hsetnx user:001 name zhangsan?  hmset命令:hmset user:001 username zhangsan age 20 sex 1 大量設定  hmget user:001 username age sex:批量擷取值?  >hexists user:001 name //是否存在, 若存在返回1?  >hlen user:001  //擷取某雜湊user001名中鍵的數量?  >hdel user:001 name //刪除雜湊user:001 中name鍵?  >hkeys user:002   //返回雜湊名為user:002中的所有鍵。  >hvals user:002   //返回雜湊名為user:002中的所有值。  >hgetall user:002 //返回雜湊名為user:002中的所有鍵和值。

 

 

Redis進階實用特性為Redis添加密碼
警告:因為redis 速度相當快,所以在一台比較好的伺服器下,一個外部的使用者可以在一秒鐘進行150K 次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解。?1.進入設定檔: vi /usr/local/redis/etc/redis.conf 設定:requirepass redis的密碼2. 重啟服務:# ./redis-cli shutdown 執行關閉# ./redis-server /usr/local/redis/etc/redis.conf  啟動3. 登入(兩種)# ./redis-cli 用戶端命令連結的伺服器>auth 密碼值  //授權後方可使用?# ./redis-cli -a  密碼 //串連時指定密碼來進行授權

 

兄弟連學python---Redis基礎知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.