1、NoSQL:
????????指的是非關系型數據庫,主要分成四大類:鍵值存儲數據庫、列存儲數據庫、文檔型數據庫、圖形數據庫。
2、什么是Redis:
????????Redis是一種基于內存的數據庫,一般用于做緩存的中間件。
3、Redis的主要的特點:
????????1、Rdis的是一個高性能的內存數據庫,數據是以鍵值對的形式存儲在數據庫中。
????????2、Redis可以持久化,主要使用過 AOF和快照來保證數據的持久化。
????????3、Redis支持多種數據類型的存儲結構,有String、List、set、zset、hash五種存儲結構。
????????4、Redis是單線程,由于是單線程作業,所以線程是安全的。
4、Redis中常見的一些命令:
1、刪除Redis中一個或者是多個key,不存在的key會跳過,多個key之間通過空格隔開del key[ key .... ] 返回的是被刪除key的數量2、判斷Redis中某個key是否存在,檢查給定key 是否存在。多個key之間使用空格隔開,只要有一個key存在,返回值就是1exists key 返回的是存在的個數,如果key存在。3、對已經存在的key設置一個過期的時間,當時間一到key就會被刪除:expire key seconds 設置成功返回值是14、找出指定格式的key:keys pattern 查出所有的指定模式的key,KEYS * 匹配數據庫中所有key 。
KEYS h?llo 匹配hello ,hallo 和hxllo 等。
KEYS h*llo 匹配hllo 和heeeeello 等。
KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符號用 "\" 隔開
- 返回值: 符合給定模式的key 列表。5、move :將當前數據庫中的key移動到指定的數據庫中move key db 將指定的key移動到db數據庫中,成功就返回1,失敗就返回0.6、切換數據庫:select 數據庫的編號(默認是0開始的。默認到15)7、pexpire 作用也是給key設置一個過期時間,但是是毫秒級別的。
PEXPIRE key milliseconds
設置成功,返回1 key 不存在或設置失敗,返回08、pexpireat
- 語法 : PEXPIREAT key milliseconds-timestamp
- 作用 : 這個命令和EXPIREAT 命令類似,但它以毫秒為單位設置key 的過期unix 時間戳,而不是像EXPIREAT那樣,以秒為單位。返回值:如果生存時間設置成功,返回1 。當key 不存在或沒辦法設置生存時間時,返回0 9、TTL
- 語法 : TTL key
- 作用 : 以秒為單位,返回給定key 的剩余生存時間(TTL, time to live)。
- 返回值:當key 不存在時,返回-2 。當key 存在但沒有設置剩余生存時間時,返回-1 。否則,以秒為單位,返回key 的剩余生存時間。
- Note : 在Redis 2.8 以前,當key 不存在,或者key 沒有設置剩余生存時間時,命令都返回-1 。10、PTTL
- 語法 : PTTL key
- 作用 : 這個命令類似于TTL 命令,但它以毫秒為單位返回key 的剩余生存時間,而不是像TTL 命令那樣,以秒為單位。
- 返回值: 當key 不存在時,返回-2 。當key 存在但沒有設置剩余生存時間時,返回-1 。
- 否則,以毫秒為單位,返回key 的剩余生存時間。
- 注意 : 在Redis 2.8 以前,當key 不存在,或者key 沒有設置剩余生存時間時,命令都返回-1 。11、RANDOMKEY
- 語法 : RANDOMKEY
- 作用 : 從當前數據庫中隨機返回(不刪除) 一個key 。
- 返回值:當數據庫不為空時,返回一個key 。當數據庫為空時,返回nil 。12、RENAME
- 語法 : RENAME key newkey
- 作用 : 將key 改名為newkey 。當key 和newkey 相同,RENAME 命令將覆蓋舊值。如果鍵不存在,才報錯
- 返回值: 改名成功時提示OK ,失敗時候返回一個錯誤。13.TYPE
- 語法 : TYPE key
- 作用 : 返回key 所儲存的值的類型。
- 返回值:none (key 不存在)string (字符串)list (列表)set (集合)zset (有序集)hash (哈希表)
5、Redis中常見的存儲結構:
1、String存儲結構
常用的一些命令:
set設置一個key/value
get根據key獲得對應的value
mset一次設置多個key value
mget一次獲得多個key的value
getset獲得原始key的值,同時設置新值
strlen獲得對應key存儲value的長度
append為對應key的value追加內容
getrange 索引0開始截取value的內容 到末尾-1 [開始,結束]
setex設置一個key存活的有效期(秒)
psetex設置一個key存活的有效期(毫秒)
setnx存在不做任何操作,不存在添加
msetnx原子操作(只要有一個存在不做任何操作)可以同時設置多個key,只有有一個存在都不保存
decr進行數值類型的-1操作
decrby根據提供的數據進行減法操作
Incr進行數值類型的+1操作
incrby根據提供的數據進行加法操作
Incrbyfloat根據提供的數據加入浮點數(不是四舍五入)
2、set存儲結構
特點: Set類型 Set集合 元素無序 ?不可以重復
sadd為集合添加元素
smembers顯示集合中所有元素 無序
scard返回集合中元素的個數
spop隨機返回一個元素 并將元素在集合中刪除
smove從一個集合中向另一個集合移動元素 必須是同一種類型
srem從集合中刪除一個元素
sismember判斷一個集合中是否含有這個元素
srandmember隨機返回元素 后面可以加數字 表示每次返回的個數
sdiff去掉第一個集合中其它集合含有的相同元素
sinter求交集
sunion求和集
3、List存儲結構
特點:list 列表 相當于java中list 集合 特點 元素有序(插入和取出的順序一致) 且 可以重復,key還是一個字符串,值是一個
lpush將某個值加入到一個key列表頭部 lpush list1 xiaohu xiaohei xiaoming 當列表不存在的時候會進行創建
lpushx同lpush,但是必須要保證這個key存在 必須在列表進行存在的情況下從左插入
rpush將某個值加入到一個key列表末尾
rpushx同rpush,但是必須要保證這個key存在
lpop返回和移除列表左邊的第一個元素rpop返回和移除列表右邊的第一個元素
lrange獲取某一個下標區間內的元素 lrange list 0 -1
llen獲取列表元素個數
lset設置某一個指定索引的值(索引必須存在)
lindex獲取某一個指定索引位置的元素
lrem刪除重復元素
ltrim保留列表中特定區間內的元素
linsert在某一個元素之前,之后插入新元素
4、zset存儲結構
特點: 可排序的set集合 排序 不可重復
zadd添加一個有序集合元素 zadd zset 2 xiaohu 3 xiaohu2
zcard返回集合的元素個數
zrange 升序
zrevrange 降序返回一個范圍內的元素,如果想看看分數 withscores
zrangebyscore 按照分數查找一個范圍內的元素,zrangebyscore zset 0 20 withscores limit 0 2
zrank返回排名
zrevrank倒序排名
zscore顯示某一個元素的分數
zrem移除某一個元素
zincrby給某個特定元素加分
5、hash存儲結構
特點: value 是一個map結構 存在key value key 無序的
hset設置一個key/value對
hget獲得一個key對應的value
hgetall獲得所有的key/value對
hdel刪除某一個key/value對
hexists判斷一個key是否存在
hkeys獲得所有的keyhvals獲得所有的value
hmset設置多個key/valuehmget獲得多個key的value
hsetnx設置一個不存在的key的值
hincrby為value進行加法運算(只能針對數值做運行)
hincrbyfloat為value加入浮點值