redis的基礎(chǔ)應(yīng)用

駱神給我們講的redis财饥,整堂課內(nèi)心除了臥槽杨箭,好牛批,其實(shí)啥也沒(méi)記住??????????
以下是對(duì)這周redis的 學(xué)習(xí)做的一點(diǎn)小小的總結(jié):

Redis定義

redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多阻荒,包括string(字符串)挠锥、list(鏈表)众羡、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)蓖租。這些數(shù)據(jù)類型都支持push/pop粱侣、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的蓖宦。在此基礎(chǔ)上齐婴,redis支持各種不同方式的排序。與memcached一樣稠茂,為了保證效率柠偶,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件睬关,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步诱担。

Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。 redis的出現(xiàn)电爹,很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足蔫仙,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Java丐箩,C/C++摇邦,C#,PHP屎勘,JavaScript施籍,Perl,Object-C概漱,Python丑慎,Ruby,Erlang等客戶端犀概,使用很方便立哑。 [1]

Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步姻灶,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器铛绰。這使得Redis可執(zhí)行單層樹復(fù)制。存盤可以有意無(wú)意的對(duì)數(shù)據(jù)進(jìn)行寫操作产喉。由于完全實(shí)現(xiàn)了發(fā)布/訂閱機(jī)制捂掰,使得從數(shù)據(jù)庫(kù)在任何地方同步樹時(shí)敢会,可訂閱一個(gè)頻道并接收主服務(wù)器完整的消息發(fā)布記錄。同步對(duì)讀取操作的可擴(kuò)展性和數(shù)據(jù)冗余很有幫助这嚣。

  • 由于是在Linux上操作的redis鸥昏,所以這里我們先來(lái)說(shuō)一下Linux環(huán)境下安裝軟件的過(guò)程。

1. 通過(guò)包管理工具安裝軟件姐帚。

定義:

(1). yum( Yellow dog Updater, Modified)是一個(gè)在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器吏垮。基於RPM包管理罐旗,能夠從指定的服務(wù)器自動(dòng)下載RPM包并且安裝膳汪,可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟體包九秀,無(wú)須繁瑣地一次次下載遗嗽、安裝。yum提供了查找鼓蜒、安裝痹换、刪除某一個(gè)、一組甚至全部軟件包的命令都弹,而且命令簡(jiǎn)潔而又好記娇豫。

yum的一些常用命令

1.列出所有可更新的軟件清單命令:yum check-update
2.更新所有軟件命令:yum update
3.僅安裝指定的軟件命令:yum install <package_name>
4.僅更新指定的軟件命令:yum update <package_name>
5.列出所有可安裝的軟件清單命令:yum list
6.刪除軟件包命令:yum remove <package_name>
7.查找軟件包 命令:yum search <keyword>
8.清除緩存命令:
yum clean packages: 清除緩存目錄下的軟件包
yum clean headers: 清除緩存目錄下的 headers
yum clean oldheaders: 清除緩存目錄下舊的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除緩存目錄下的軟件包及舊的headers

yum實(shí)例

  • yum CentOS
    ~ yum search nginx
    ~ yum install nginx
    ~ yum erase nginx / yum remove nginx
    ~ yum info nginx
    ~ yum list installed | grep nginx
  • rpm Redhat
    ~ rpm -ivh 下載的rpm包文件名
    ~ rpm -e
    ~ rpm -qa
  • apt Ubuntu

2.源代碼構(gòu)建安裝

安裝Redis官方最新版:

~ wget http://download.redis.io/releases/redis-5.0.7.tar.gz
~ gunzip redis-5.0.7.tar.gz
~ tar -xvf redis-5.0.7.tar
~ cd redis-5.0.7
~ make && make install

安裝Git官方最新版

~ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.1.tar.xz
~ xz -d git-2.24.1.tar.xz
~ tar -xf git-2.24.1.tar
~ cd git-2.24.1
~ yum install -y curl libcurl-devel
~ ./configure --prefix=/usr/local
~ make && make install

以安裝python環(huán)境為例:

[root ~]# yum install gcc (安裝編譯環(huán)境)
[root ~]# wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz (下載安裝包)
[root ~]# gunzip Python-3.7.5.tgz (解壓)
[root ~]# tar -xvf Python-3.7.5.tar (解歸檔)
[root ~]# cd Python-3.7.5 (進(jìn)入安裝包)
[root ~]# ./configure —prefix=/usr/local/python37 —enable-optimizations (設(shè)置安裝路徑)
[root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel (安裝相關(guān)依賴庫(kù))
[root ~]# make && make install (編譯執(zhí)行安裝文件)

[root ~]# ln -s /usr/local/python37/bin/python3.7 /usr/bin/python3 (給python指令文件創(chuàng)建快捷方式python3)
[root ~]# python3 —version
Python 3.7.5
[root ~]# python3 -m pip install -U pip (安裝pip)
[root ~]# ln -s /usr/local/python37/bin/pip /usr/bin/pip3 (給pip指令創(chuàng)建快捷方式pip3)
[root ~]# pip3 —version

運(yùn)行redis服務(wù)之前的一些常見(jiàn)命令

命令 & ---> 將命令放到后臺(tái)運(yùn)行
jobs ---> 查看后臺(tái)運(yùn)行的命令
fg %編號(hào) ---> 將后臺(tái)命令放到前臺(tái)運(yùn)行
Ctrl+z ---> 將前臺(tái)命令暫停并放到后臺(tái)
bg %編號(hào) ---> 將暫停的命令在后臺(tái)運(yùn)行
redis-server >> redis.log & --->后臺(tái)啟動(dòng)服務(wù)器輸出重定向
netstat -ntlp --->查看程序端口 (常用端口 1024-65535 ,1024以下為著名端口)
(3306/6379---項(xiàng)目中一般不公開缔杉,容易被劫持挖礦)
redis-sever --requirepass 口令 >> redis.log & 后臺(tái)啟動(dòng)redis并加口令
redis-server >> redis.log & --->后臺(tái)啟動(dòng)服務(wù)器輸出重定向
netstat -ntlp --->查看程序端口 (常用端口 1024-65535 锤躁,1024以下為著名端口)
(3306/6379---項(xiàng)目中一般不公開)
redis-sever --requirepass 口令 >> redis.log & 后臺(tái)啟動(dòng)redis并加口令
修改端口 --port 端口號(hào):


修改端口 --port 端口號(hào):

查看Redis進(jìn)程
ps -ef | grep -E "redis-server"

一行代碼殺進(jìn)程:

ps -ef | grep -E "redis-server" | grep -v "grep" |awk '{print $2}' |xargs kill

1.啟動(dòng) redis 客戶端,打開終端并輸入命令 redis-cli或详。該命令會(huì)連接本地的 redis 服務(wù)系羞。

$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
redis-cli -p 端口 -h 主機(jī)

2.一些簡(jiǎn)單命令

set username luohao ex 120 ---> 添加鍵值對(duì)
get username ---> 通過(guò)鍵查找值
ttl username ---> 查看鍵過(guò)期時(shí)間
expire username 300 ---> 設(shè)置鍵過(guò)期時(shí)間
keys * ---> 查看所有鍵
dbsize ---> 查看數(shù)據(jù)庫(kù)大小(鍵值對(duì)數(shù)量)

redis的核心數(shù)據(jù)類型:

1. 字符串
set key value ---> 添加鍵值對(duì)
get key ---> 通過(guò)鍵查看值
strlen key ---> 獲取字符串長(zhǎng)度
append key value2 ---> 給字符串追加內(nèi)容
mset key1 value1 key2 value2 ---> 添加多組鍵值對(duì)
mget key1 key2 ---> 查看多個(gè)鍵對(duì)應(yīng)的值
incr key ---> 值加1
incrby key value ---> 值加上value
decr key ---> 值減1
decrby key value ---> 值減去value
getrange key start end ---> 獲取字符串指定范圍的子串
setrange key offset value ---> 修改字符串指定位置的內(nèi)容
2. 哈希(表) - hash
hset key field value ---> 添加hash類型鍵值對(duì)
hmset key field1 value1 field2 value2 ---> 添加多組hash類型鍵值對(duì)
hget key field ---> 獲取hash類型字段對(duì)應(yīng)的值
hmget key field1 field2 ---> 獲取hash類型多個(gè)字段對(duì)應(yīng)的值
hgetall key ---> 獲取hash類型所有的字段和對(duì)應(yīng)的值
hkeys key ---> 獲取hash類型所有的字段
hvals key ---> 獲取hash類型所有字段的值
hexists key field ---> 判斷hash類型某個(gè)字段是否存在
3. 列表 - list
lpush key value1 value2 value3 ---> 在左邊添加元素
rpush key value1 value2 value3 ---> 在右邊添加元素
lpop key ---> 從左邊移除一個(gè)元素
rpop key ---> 從右邊移除一個(gè)元素
lrange key start end ---> 查看列表指定范圍的元素
llen key ---> 查看列表元素個(gè)數(shù)
lindex key index ---> 查看列表指定位置元素
lrem key count value ---> 刪除列表中指定元素
4. 集合 - set
sadd key value1 value2 value3 ---> 添加元素
srem key value ---> 刪除元素
spop ---> 獲取隨機(jī)元素
scard key ---> 查看元素個(gè)數(shù)
smembers key ---> 查看所有元素
sismember key value ---> 查看集合中有沒(méi)有指定元素
sinter key1 key2 ---> 交集
sunion key1 key2 ---> 并集
sdiff key1 key2 ---> 差集
5. 有序集合 - zset
zadd key score1 mem1 score2 mem2 ---> 添加元素
zrem key mem ---> 刪除元素
zrange key start end ---> 按score的升序查看元素
zrevrange key start end ---> 按score的降序查看元素
zscore key mem ---> 查看元素對(duì)應(yīng)的score
zincrby key value mem ---> 修改元素的score值

LBS應(yīng)用 - Location-Based Service - 基于位置的服務(wù)

Linux系統(tǒng)啟停服務(wù)
~ 啟動(dòng):systemctl start nginx
service nginx start
~ 停止:systemctl stop nginx
service nginx stop
~ 重啟:systemctl restart nginx
~ 查看狀態(tài):systemctl status nginx
~ 開機(jī)自啟:systemctl enable nginx
~ 禁用自啟:systemctl disable nginx

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霸琴,一起剝皮案震驚了整個(gè)濱河市椒振,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梧乘,老刑警劉巖澎迎,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異选调,居然都是意外死亡夹供,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門仁堪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)哮洽,“玉大人,你說(shuō)我怎么就攤上這事弦聂∧窀ǎ” “怎么了氛什?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)匪凉。 經(jīng)常有香客問(wèn)我枪眉,道長(zhǎng),這世上最難降的妖魔是什么再层? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任贸铜,我火速辦了婚禮,結(jié)果婚禮上树绩,老公的妹妹穿的比我還像新娘萨脑。我一直安慰自己隐轩,他們只是感情好饺饭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著职车,像睡著了一般瘫俊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悴灵,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天扛芽,我揣著相機(jī)與錄音,去河邊找鬼积瞒。 笑死川尖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茫孔。 我是一名探鬼主播叮喳,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缰贝!你這毒婦竟也來(lái)了馍悟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剩晴,失蹤者是張志新(化名)和其女友劉穎锣咒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赞弥,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毅整,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绽左。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悼嫉。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妇菱,靈堂內(nèi)的尸體忽然破棺而出承粤,到底是詐尸還是另有隱情暴区,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布辛臊,位于F島的核電站仙粱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏彻舰。R本人自食惡果不足惜伐割,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刃唤。 院中可真熱鬧隔心,春花似錦、人聲如沸尚胞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)笼裳。三九已至唯卖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躬柬,已是汗流浹背拜轨。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留允青,地道東北人橄碾。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像颠锉,于是被迫代替她去往敵國(guó)和親法牲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容