Redis入门(一)
目錄
一、Redis入門介紹
1.入門概述
2. 作用
3.下載地址
4.Linux版安裝
5. Redis啟動后雜項基礎知識講解
二、Redis數(shù)據(jù)類型
1.Redis的五大數(shù)據(jù)類型
2.redis常見數(shù)據(jù)類型操作命令
3.Redis鍵(key)
4.字符串類型string
5.列表類型list
6.集合類型set
7.哈希類型hash
一、Redis入門介紹
1.入門概述
Redis:REmote DIctionary Server(遠程字典服務器)是完全開源免費的,用C語言編寫的,遵守BSD協(xié)議,是一個高性能的(key/value)分布式內(nèi)存數(shù)據(jù)庫,基于內(nèi)存運行并支持持久化的NoSQL數(shù)據(jù)庫,是當前最熱門的NoSql數(shù)據(jù)庫之一,也被人們稱為數(shù)據(jù)結構服務器。
Redis 與其他 key - value 緩存產(chǎn)品有以下三個特點
(1)Redis支持數(shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以再次加載進行使用
(2)Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結構的存儲
(3)Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份
2. 作用
(1)內(nèi)存存儲和持久化:redis支持異步將內(nèi)存中的數(shù)據(jù)寫到硬盤上,同時不影響繼續(xù)服務
(2)取最新N個數(shù)據(jù)的操作,如:可以將最新的10條評論的ID放在Redis的List集合里面
(3)模擬類似于HttpSession這種需要設定過期時間的功能
(4)發(fā)布、訂閱消息系統(tǒng)
(5)定時器、計數(shù)器
(6)分布式集群架構中的session分離
(7)應用排行榜
(8)任務隊列(秒殺、搶購、12306等)
3.下載地址
http://redis.io/???????//英文原版
http://www.redis.cn/??//中文版
https://github.com/dmajkic/redis/download???//windows版下載地址
4.Linux版安裝
(1)下載獲得redis-4.0.10.tar.gz后將其放入Linux目錄/opt中
(2)在/opt目錄下,解壓命令:tar -zxvf redis-4.0.10.tar.gz
(3)解壓完成后出現(xiàn)文件夾:redis-4.0.10
(4)進入目錄:cd redis-4.0.10
(5)在redis-4.0.10目錄下執(zhí)行make命令
運行make命令時出現(xiàn)的錯誤解析解決方法:
①安裝gcc
聯(lián)網(wǎng)狀態(tài)下執(zhí)行命令 yum install gcc-c++
②二次make(jemalloc/jemalloc.h:沒有那個文件或目錄)
運行make distclean之后再運行make
③redis Test(可以不執(zhí)行)
(6)make完成之后繼續(xù)執(zhí)行make install
(7)查看默認安裝目錄:usr/local/bin
redis-benchmark:性能測試工具,可以在自己本子運行,看看自己本子性能如何(服務啟動起來后執(zhí)行)
redis-check-aof:修復有問題的AOF文件,rdb和aof后面講
redis-check-dump:修復有問題的dump.rdb文件
redis-cli:客戶端,操作入口
redis-sentinel:redis集群使用
redis-server:Redis服務器啟動命令
(8)啟動
1)將默認的redis.conf拷貝到自己定義好的一個路徑下,比如/myconf
2)修改redis.conf文件將里面的daemonize no 改成 yes,讓服務在后臺啟動
3)啟動
4)連通測試
在redis目錄下運行ps -rf|grep redis
5)/usr/local/bin目錄下運行redis-server,運行拷貝出存放了自定義conf文件目錄下的redis.conf文件
6)redis-cli -p 6379
5. Redis啟動后雜項基礎知識講解
(1)單進程
單進程模型來處理客戶端的請求。對讀寫等事件的響應是通過對epoll函數(shù)的包裝來做到的。Redis的實際處理速度完全依靠主進程的執(zhí)行效率。
epoll是Linux內(nèi)核為處理大批量文件描述符而作了改進的epoll,是Linux下多路復用IO接口select/poll的增強版本,它能顯著提高程序在大量并發(fā)連接中只有少量活躍的情況下的系統(tǒng)CPU利用率。
(2)默認16個數(shù)據(jù)庫,類似數(shù)組下表從零開始,初始默認使用零號庫
(3)select命令切換數(shù)據(jù)庫
(4)dbsize查看當前數(shù)據(jù)庫的key的數(shù)量
(5)flushdb:清空當前庫
(6)flushall:通殺全部庫
(7)統(tǒng)一密碼管理,16個庫都是同樣密碼,要么都OK要么一個也連接不上
(8)Redis索引都是從零開始
二、Redis數(shù)據(jù)類型
1.Redis的五大數(shù)據(jù)類型
String(字符串)
Hash(哈希,類似java里的Map)
list(列表)
set(集合)
zset(有序集合)
關于key的定義,注意如下幾點:
1)key不要太長,最好不要操作1024個字節(jié)
2)key不要太短,如果太短會降低key的可讀性
3)在項目中,key最好有一個統(tǒng)一的命名規(guī)范
2.redis常見數(shù)據(jù)類型操作命令
http://redisdoc.com/
3.Redis鍵(key)
keys *:查看當前庫的所有鍵
exists key:判斷某個key是否存在
del key:刪除給定的一個或多個key,多個key用空格隔開
move key db:將當前數(shù)據(jù)庫的 key 移動到給定的數(shù)據(jù)庫 db 當中
expire key 秒:為給定的key設置過期時間
ttl key:查看還有多少秒過期。-1表示永不過期,-2表示已過期
type key:查看key為什么類型
4.字符串類型string
(1)概述
字符串類型是Redis中最為基礎的數(shù)據(jù)存儲類型,它在Redis中是二進制安全的,這便意味著該類型存入和獲取的數(shù)據(jù)相同。在Redis中字符串類型的Value最多可以容納的數(shù)據(jù)長度是512M。
(2)常用命令
set key value:設定key持有指定的字符串value,如果該key存在則進行覆蓋操作。
get key:獲取key的value,如果該key關聯(lián)的value不是String類型,redis將返回錯誤信息,如果該key不存在,返回(nil)。
del key:刪除指定key。
mset:同時設置一個或多個key-value對。
? ? ? eg:mset k1 hello k2 world k3 java
setnx key value:將key的值設為value,當且僅當key不存在。
setex key seconds value:將值value關聯(lián)到key,并將key的生存時間設為seconds秒。
5.列表類型list
lpush key values[value1 value2...]:在制定的key所關聯(lián)的list的頭部插入所有的values,如果該key不存在,該命令在插入的之前創(chuàng)建一個與該key關聯(lián)的空鏈表,之后再向該鏈表的頭部插入數(shù)據(jù)。
lpop key:返回并彈出制定的key關聯(lián)的鏈表的第一個元素。如果該key不存在,返回ni;存在,返回鏈表的頭部元素。
rpop key:從尾部彈出元素。
6.集合類型set
(1)概述
在Redis中,我們可以將Set類型看作沒有排序的字符集合,和List類型一樣,我們也可以在該類型的數(shù)據(jù)值上執(zhí)行添加、刪除或判斷某一元素是否存在等操作。Set集合不允許出現(xiàn)重復的元素,Set可包含的最大元素數(shù)量為4294967296。
(2)常用命令
sadd key values[value1、value2...]:向set中添加數(shù)據(jù),如果該key的值已有則不會重復添加。
smembers key:獲取set中所有的成員
Srem key members[member1、member2...]:刪除set中指定的成員
差集:sdiff
交集:sinter
并集:sunion
scard:獲取集合里面的元素個數(shù)
Srandmember key?某個整除:隨機出N個數(shù)
7.哈希類型hash
(1)概述
Redis中的Hash類型可以看成具有String Key和String Value的map容器。所以該類型非常適合于存儲值對象的信息。
(2)常用命令
hset key field value:為指定的key設定fiele/value鍵值對
hmset key field value[field value...]:同時將多個field/value鍵值對設置到哈希表中
hget key field:返回指定的key中的field的值
hdel key field[field...]:刪除一個或多個字段,返回被刪除的字段個數(shù)
hgetall key:返回哈希表key中,所有的域和值,若key不存在,返回空列表
hexists key field:查看哈希表key中,給定域field是否存在,存在返回1,不存在返回0
?
總結
以上是生活随笔為你收集整理的Redis入门(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux权限和进程管理、网络配置、任务
- 下一篇: Redis的两种持久化方式