Redis(一) 簡介

簡介

是以key-value形式存儲, 和傳統的關係型數據庫不一樣, 不一定遵循傳統數據庫到的一些基本要求(非關係型的, 分佈式的, 開源的, 水平可擴展的)

優點:

對數據高併發讀寫

對海量數據的高效率存儲和訪問

對數據的可擴展性和高可用性

缺點:

redis(ACID處理非常簡單)

無法做到太複雜的關係數據庫模型

數據類型

Redis是以key-value store存儲, data structure service數據結構服務器。鍵可以包含: 字符串, 哈希, 鏈表, 集合, 有序集合。這些數據集合都支持push/pop, add/remove及取交集以及更豐富的操作, redis支持各種不同的方式排序, 爲了保證效率, 數據都是緩存在內存中, 它也可以週期性的把更新的數據寫入磁盤或者把修改操作寫入追加到文件中

Redis一共分爲五種基本數據類型: String, Hash, List, Set, ZSet

String類型

String類型包含很多種類型的特殊類型, 並且是二進制安全的。

set和get方法

設置值: set name bhz 取值 get name

刪除值: del name

使用setnx(not exist)

name 如果不存在進行設置, 存在就不需要進行設置了, 返回0

使用setex(expired)

setex color 10 red設置color的有效期爲10秒, 10秒後返回nil(在redis裏nil表示空)

使用setrange替換字符串:

set email [email protected]

setrange email 10 ww(10表示從第幾位開始替換, 後面跟上替換的字符串)

使用一次性設置多個和獲取多個值的mset, mget方法

mset key1 bhz key2 bai key3 28

對應的

mget key1 key2 key3方法

對應的也有msetnx和mget方法

一次性設置和取值的getset方法

set key4 cc

getset key4 changechun返回舊值並設置新值的方法

incr和decr方法: 對某一個值進行遞增和遞減

incrby和decrby方法: 對某個值進行指定長度的遞增和遞減

append [name]方法: 字符串追加方法

strlen [name]方法: 獲取字符串的長度

Hash類型

Hash類型是String類型的field和value的映射表, 或者說一個String集合。它特別適合存儲對象, 相比較而言, 將一個對象類型存儲在Hash類型裏要比存儲在String類型裏佔用更少的內存空間, 並方便存取整個對象。

形如: hset myhash field1 hello(含義是hset是hash集合, myhash是集合名字 field1是字段名hello爲其值) 使用hget myhash field1獲取內容, 也可以存儲多個值。

hmset可以進行批量存儲多個鍵值對: hmset myhash sex nan addr Beijing, 也可使用hmget進行批量獲取多個鍵值對

同樣也有hsetnx, 和setnx大同小異

hincrby和hdecrby集合遞增和遞減

hexists是否存在key 如果存在返回 不存在返回0

hlen 返回hash集合裏的所有的鍵值

hdel 刪除指定hash的field

hkeys 返回hash裏所有的字段

hvals 返回hash的所有value

hgetall 返回hash裏所有的key和value

List類型

List類型是一個鏈表結構的集合, 其主要功能有push, pop, 獲取元素等。更詳細的說, List類型是一個雙端鏈表的結構, 可以通過相關操作進行集合的頭部或者尾部添加刪除元素, list的設計非常簡單精巧, 即可以做爲棧, 又可以作爲隊列。

lpush方法: 從頭部加入元素(棧) 先進後出

lpush list1 “hello”

lpush list1 “world”

lrange list1 0 -1

rpush方法: 從尾部加入元素(隊列) 先進先出

rpush list2 “beijing”

rpush list2 “sxt”

lrange list2 0 -1

linsert方法: 插入元素

linsert list3 before [集合的元素][插入的元素]

lset方法: 將指定下標的元素替換掉

lrem方法: 刪除元素 返回刪除的個數

ltrim方法: 保留指定key的值範圍內的數據

lpop方法: 從list的頭部刪除元素, 並返回刪除元素

rpop方法: 從list的尾部刪除元素, 並返回刪除元素

rpoplpush方法: 第一步從尾部刪除元素, 然後第二步並從頭部加入元素

lindex方法: 返回名稱爲key的list中index位置的元素

llen方法: 返回元素的個數

set類型和zset類型

set集合是string類型的無序集合, set是通過hashtable實現的, 對集合可以取交集, 並集, 差集

saddd方法: 向名稱爲key的set中添加元素, set集合不允許重複元素

smembers: 查看set集合的元素

srem方法: 刪除set集合的元素

spop方法: 隨機返回刪除的key

sdiff方法: 返回兩個集合的不同元素(哪個集合在前面就以哪個集合爲標準)

sdiffstore方法: 將返回的不同元素存儲到另外一個集合裏

這裏是把set1和set2的不同元素(以set1爲準)存儲到set3集合裏

sinter方法: 返回集合的交集

sinterstore方法: 返回交集結果, 存入set3中

sunion方法: 取並集

sunionstore方法: 取得並集, 存入set3中

smove方法: 從一個set集合移動到另一個set集合裏

scard方法: 查看集合裏元素個數

sismember方法: 判斷某元素是否爲集合中的元素, 返回1代表是集合中的元素, 0代表不是

srandmember方法: 隨機返回一個元素

zdd向有序集合中添加一個元素, 該元素如果存在, 則更新順序, 在重複插入的時候, 會根據順序屬性更新

zrem 刪除名稱爲key的zset中的元素member

zincrby以指定值去自動遞增或者減少, 用法和之前的incrby類似

zrangebyscore 找到指定區間範圍的數據進行返回

zremrangebyrank 刪除1到1

zremrangebyscore 刪除指定序號

zrank 返回排序索引 從小到大排序

zrevrank 返回排序索引 從大到小排序

zrangebyscore zset1 2 3 withscores 找到指定區間範圍的數據進行返回

zcard 返回集合裏所有元素的個數

zcount 返回集合中score中給定區間中的數量

Redis高級命令及特性

返回滿足的所有鍵keys *(可模糊匹配)

exisits是否存在指定的key

expire設置某個key的過期時間, 使用ttl查看剩餘時間

persist取消過期時間

select 選擇數據庫 數據庫爲0到15(一共16個數據庫)默認進入的是0數據庫

move [key][數據庫下標]將當前數據中的key轉移到其他數據庫中

randomkey隨機返回數據庫裏的一個key

rename重命名key

echo 打印命令

dbsize 查看數據庫的key數量

info 獲取數據庫信息

config get實時傳輸收到的請求 config get * 返回所有配置

flushdb 清空當前數據庫, flushall 清空所有數據庫

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