1. 程式人生 > >no sql 數據庫 -- redis 應用

no sql 數據庫 -- redis 應用

數組 集合類 sql 數據庫 logs 系統 conf string類 鏈表的操作 lan

1 .入門概述
一 、是什麽 (who)

(1)redis remote dictionary server(遠程字典服務器)?

是完全開源免費的,用C語言編寫的,遵守Bsd協議,是一個高性能的(key value)分布式內存數據庫
基於內存運行並支持持久化的NOSQL數據庫,是當前最熱門的NOSQL數據庫之一,也被人們成為數據節後服務器
(2)redis與其他key—values緩存產品有以下三個特點。
A . redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的話可以再次加載進行使用
B . redis不僅僅支持簡單的key—value類型的數據,同是還提供 list set zset hash等數據結構的存儲
C . redis支持數據的備份,幾master—slave模式的數據備份

二能幹嘛 (what)
(1)內存存儲和持久化:redis支持異步將內存中數據寫到硬盤上,同是不影響繼續服務取最新N個數據的操作,如:
(2)可以將最新的10條評論的ID放在redis的list集合裏面模擬類似於httpsession這種需要設置過期時間的功能
(3)發布 訂閱消息系統
(4)定時器 計數器

三 去哪下(where)
http:// redis.io/
http://www.redis.cn/

四 怎麽玩
數據類型 基本操作和配置
持久化和復制 ROB/AOP
事務的控制
復制

五 解決java 連接 vmware redis 連不上問題?
(1).關閉防火墻 service iptables status
(2).修改redis.conf配置文件,將端口127.0.0 註釋掉,這樣任何ip都可以訪問
(3).修改redis.conf配置文件, protected-mode yes
(4).修改 redis.conf配置文件,加上密碼 requirepass yes

redis 安裝鏈接

jedis 操作redis數據庫

2 . redis 命令

一 redis 5大數據類型 redis命令大全

(1).默認16 個數據庫 ,類似數組下表從零開始,初始默認使用零號
(2). select 命令 切換數據庫 select 0
(3) DBsize 查看當前數據庫的key的數量
(4).keys * 查看當前庫的所有key
(5). flushdb 清除點當前庫的所有數據
(6). flushall 清除所有的庫的所有數據
(7). exists k1 判斷在庫裏 是否有當前key
(8). move 鍵名 庫名 把key和values 剪切到 庫裏
(9). ttl 註意英文l 鍵名 查看還有多少秒過期,-1 表示永不過期,-2表示已過期
(10).type key 查看你的key 是什麽類型
(11)expire 鍵名 秒 表示給key賦值過期時間 單位為妙
二、string類型數據

string 是redis 最基本的類型,你可以理解成與memcache一模一樣的類型,一個key對應一個value
string 類型是二進制安全的。意思是redis的string可以包含任何數據,比如jpg圖片或者序列化的對象
string 類型是redis最基本的數據類型,一個redis中字符串value最多可以是521m
(1) set/get/del 分別是添加 查詢 刪除 追加 截取
(2) append 鍵名 字符串 追加字符串
(3) strlen 鍵名 查看key的長度
(4) incr 鍵名 執行加上 1 (value 必須是數)
(5). incrby key increment 遞增倍數
(6). decr 執行減去 1
(7). decrby 遞減倍數
(8). getrange 鍵名 開始角標 結束角標 獲取指定區間範圍內的值
(9). setrange 鍵名 開始角標 字符串 設置指定區間範圍內的值
(10). setex 鍵 妙值
(11). setnx key values 如果有key 賦值失敗
(12). mset 添加多個 mget 查詢多個
(13). msetnx 添加多個 如果添加key中有一個重復的 賦值失敗

三 、 list (列表)

redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部的(右邊)
它的底層實際是個鏈表
(1). lpush key []數組 是先進後出
(2). rpush key []數組 是先進先出
(3). lrang key start end -1代表所有 查詢list
(4). lpop key 棧定出去一個 移除頂部的一個
(5). rpop key 棧底出去一個 移除底部的一個
(6). lindex key 角標位置 按照索引下標獲得元素(從上到下)
(7). llen key 顯示list 長度
(8). lrem key 刪除 N 個value
(9). ltrim key 開始index 結束index 截取指定範圍的值後再賦值給key
(10).rpoplpush 源列表 目的列表
(11).lset key index valus 表示更換角標 為 valus值
(12). linsert key before 值1 插入角標 前 的values值
(13). linsert key after 值1 插入角標 後 的values值
(14). 它是一個字符串鏈表,left right都可以插入
如果鍵不存在,創建新的鏈表 如果鍵已存在,新增內容
如果值全部移除 對應的鍵也就消失了
鏈表的操作無論是頭和尾效率都極高,但如是對中間元素進行操作,效率就很慘淡了。

四、 set (集合)

redis的set 是string類型的無序集合,它是通過hashtable實現的
(1). sadd key [] 添加數據 添加重復數據只能有一個
(2).smembers key 查詢所有key 的集合
(3).sismember key 判斷是否有key 值
(4).scard key 獲取集合裏面的元素個數
(5).srem key values 刪除集和中元素
(6).srandmember key 某個整數(隨機出幾個數)
(7).spop key 隨機出棧
(8).smove key1 key2 在key1 裏某個值 作用是將key1 裏的某個值賦給key2
(8).數學集合類
差集 sdiff set1 set2 交集 sinter 並集 sunion

五 hash(哈希)

redis hash 是一個鍵值對集合
redis hash 是一個string類型的field和valus的映射表,hash特別適合用於存儲對象
類似java 裏面的map<string,object>
(1). hset key field values 添加
(2). hge t key field 查詢
(3). hmset key field values ( field values 、、、) 添加多個
(4). hmg et key field(field、、、、、)得到多個
(5). hgetall key 得到key values key values
(6). hdel key field 刪除
(7). hlen key 查詢長度
(8). hexists key field 判斷是否有filed
(9). hkeys key名字 /hvals key 名字 查詢集合
(10). hincreby key field increment 遞增數字 hincreby hash2 k4 2
(11). hincrebyfloat key field increment 遞增小數
(12). hsetnx key field values 添加不重復的數據

六 zset (有序集合)

redis zset和set 一樣也是string 類型元素的集合,且不允許重復的成員
不同的是每個元素都會關聯一個double類型的分數
redis 正式通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score) 卻可以重復
(1). zadd key score1 v1 score2 v2 添加
(2). zrange key 0 -1 查詢所有
(3). zrangebyscore key 開始score 結束score 截取包含當前的分數 zrangebyscore zset1 (1 (2 不包含當前的值
(4). zrangebyscore zset1 1 2 limit 0 1 分頁
(5). zrem key 某score下對應的values值, 刪除元素
(6). zcard key 查詢集合大小
(7). zcount key score 區間 統計區間大小
(8). zrank key values 獲取下標值
(9). zscore key 對應值 獲得分數
(10). zrevrank key values值 逆序獲取下標值
(11). zrevrange zset1 0 -1 逆序獲取數據值
(12). zrevrangebyscore key 結束分數 開始分數

.snapshotting 快照
(1) rdb redis database 縮寫 持久化文件到dump.rdb
(2) aof append only file 縮寫 appendonly.aof 配置文件默認 no
aof 文件如果錯誤 可以用redis-check-aof --fix appendonly.aof

.redis 實務
discard 取消實務,放棄執行事務塊內的所有命令 放棄事務
exec 執行所有事務塊內的命令 提交事務 有一條語句錯誤 側執行錯誤
multi 標記一個事務內的命令 開啟事務
unwatch 取消watch命令對所有key的監事
watch key 監事一個 ,如果早事務執行之前key 被其他命令所改動 ,那麽事務將被打斷

.集群
(1).拷貝多個redis.conf
(2).開啟daemonize yes
(3).pid 文件名字
(4). 指定端口
(5).Log 文件名字
(6).Dump.rdb




no sql 數據庫 -- redis 應用