【redis】redis的入門與應用【原創】
1-1 課程內容概要
1. 課程概要
Redis是php專案中使用到的主要快取服務,主要是參考慕課網的《redis的入門與應用_筆記》,這裡主要介紹:
* redis的安裝使用
* PHP如何使用redis
* redis最常也是必知必會的五大資料結構及
* 常用命令
1-2 什麼是redis
1. 什麼是redis
- redis是遠端的(redis有服務端和客戶端,一般說redis通常指伺服器)
- redis是基於記憶體的(資料以及資料結構都是儲存在記憶體中的,所以讀寫速度非常快,效能比基於硬碟的MySQL快很多,但是非常吃記憶體)
- redis是非關係型資料庫(本質上是資料庫,但是和MySQL不一樣,MySQL關係型資料庫儲存時必須定義資料字典,而redis不需要)
1-3 redis的應用場景
1. redis的應用場景
- 快取: 某些系統介面比較慢的時候,可以把一些資料放在Redis中快取起來,下次取資料就不進行非常耗時的SQL操作了,直接從快取中取資料,這個是提升系統性能最常用的方法之一
- 佇列: Redis中有list介面,可以儲存list,可以使用Push插入佇列的元素, 使用 Pop來彈出退出佇列的元素,push和pop操作保證了原子性的實現
- 資料儲存: 所有的增刪改查都是在Redis中進行,Redis有硬碟的持久化機制,定期進行儲存,不需要藉助MySQL進行資料儲存,保證了資料的完整性和安全性
2-1 redis的安裝環境
1. 安裝環境
我自己本地的Linux環境是Cent OS 7.2(LNMP),下載的redis版本是3.0.6
2. 前提前提
Linux必須要安裝gcc和tcl,具體安裝方法這裡不進行介紹
2-2 redis伺服器端安裝
1. Linux安裝步驟
- 官網下載redis壓縮包,官網下載的是tar.gz格式的
- 解壓後進入到該目錄
- 執行make操作(在該目錄執行make命令,需要等待一段時間,執行完成後可以通過在該目錄的src目錄裡面看是否有redis字首的檔案判斷)
- 執行make install命令(完成之後可以通過which redis-server命令檢視安裝的路徑)
- 先把解壓後的redis目錄中的redis.conf複製到其他的地方,然後修改複製出來的redis.conf,在這裡把redis目錄中的redis.conf複製到/home/abc/redis/下,然後修改該redis.conf
把裡面的daemonize no改為yes,表示是從在後臺執行的
裡面還有一個port 6379,根據需要修改埠,為了安全的話建議修改埠
啟動redis-server
這裡是通過自定義的redis配置(即複製出來的redis.conf的檔案地址)來啟動redis-server,命令為:
[[email protected] redis-3.0.6]# redis-server /home/abc/redis/redis.conf
通過ps aux|grep redis-server檢視是否啟動
2-3 redis客戶端的安裝
1. redis客戶端的安裝
上面的步驟安裝好了之後,redis-cli(客戶端)預設也是一起安裝好的,直接可以通過redi-cli命令進行登入
redis-cli -h 127.0.0.1 -p 6379
2. 判斷是否安裝成功
可以通過info命令來輸出redis的資訊,包括版本,redis配置路徑,埠等等
3-1 redis的五種資料型別
1. redis的資料型別
3-2 string型別操作
1. String的型別
2. 寫入string
set key value
如圖:
3. 讀取string
get key
如圖:
4. 對整數的value進行自增自減以及加減操作
incr key // 自增
decr key // 自減
incrby key 2 // 加2
decrby key 2 // 減2
如圖:先設定一個value為13的string,key為string3,然後執行自增,再減去3
3-3 list型別操作
1. list的型別
list型別是一個有序的集合,可以從集合的左邊(頭部)或者是右邊(尾部)進行推入或者是彈出元素等操作
注意:list集合裡面的元素並不要求是唯一的,可以有多個元素是相同的
2. 推入元素
lpush list value1 [value2] // 頭部(左邊)插入元素(可以多個)
rpush list value1 [value2] // 尾部(右邊)插入元素(可以多個)
如圖:
此時的list從左到右為:1 2 3 4 5 6 7 8 9 10
3. 移除元素
lpop list // 移出並獲取集合的第一個元素(左邊第一個)
rpop list // 移出並獲取集合的最後一個元素(右邊第一個)
如圖:
此時的list從左到右為:3 4 5 6 7 8 9
4. 獲取集合的長度
llen list
如圖:
獲取此時list的長度:7
5. 通過索引獲取列表中的元素
lindex list index
如圖:
檢視第一個元素的值為:3
3-4 set型別操作
1. set型別
set型別和list型別類似,不同的是set中的元素都是唯一的而且set元素不分左右即不分頭尾
2. 插入元素
sadd set value
比如:
如果set中已經有該value的話,那麼會返回0,插不進去的
3. 檢視set中有多少元素
scard set
4. 刪除元素
srem set1 value
5. 返回集合set中的所有元素
smembers set
如圖:
3-5 hash型別操作
1. hash型別
hash型別也稱為雜湊型別,使用鍵值對的結構
2. 定義一個hash型別
hset hash key value
如圖為定義一個hash1表,裡面的key1的值為12
再往這個hash1表中定義key2和key3:
3. 獲取hash表中指定欄位的值
hget hash key
如圖:
4. 獲取hash表中欄位的數量
heln hash
如圖:
5. 獲取hash表中多個欄位的值
hmget hash key1 key2
如圖:
6. 獲取hash表中的所有欄位
hkeys hash
如圖:
7. 刪除hash表中的一個或者多個欄位
hdel hash key1 key2
如圖:
3-6 sort set型別操作
1. sort set(有序集合)型別
sort set(有序集合)型別:和hash很相似,不同的是每個元素都會關聯一個double型別的分數,redis正是通過這個分數來為每個元素進行從小到大的排序,有序集合裡面的元素是唯一的,但是分數及score是可以重複的
2. 新增集合
新增一個zset1集合,並且設定分數10.1,value為val1
設定分數11.2,value為val2
設定分數9.2,value為val3
zadd zset1 10.1 val1
zadd zset1 11.2 val2
zadd zset1 9.2 val3
3. 獲取set集合中的元素數量
zcard zset1
4. 獲取排行
獲取前三位分數的排行(從小到大):
zrange zset1 0 2 withscores
如圖:
注意:前兩行表示最小的score,後面類似。浮點數的儲存是像圖片中的一樣儲存的
5. 獲取某個排行
檢視val1的排行:
表示排在第二位
6. 注意
如果有兩個元素的score相同的話,則按照value來排序,比如:
val2和val3的score是一樣的,但是val2排在前面
4-1 PHP redis擴充套件安裝環境
1. 前提條件1
Linux已經安裝了PHP
2. 前提條件2
檢視是否安裝了phpize和php-config,可以通過which命令檢視是否安裝了,如果未安裝的話,yum install php-devel即可
3. 下載php-redis
wget https://github.com/phpredis/phpredis/archive/3.1.4.tar.gz
4. 可以通過php -m檢視安裝的擴充套件
php -m命令可以列出當前已經安裝的php擴充套件
4-2 PHP redis擴充套件安裝
1. 具體的安裝步驟
a. 解壓php的redis擴充套件包
tar -zxvf xxx.tar.gz
unzip xxx.zip
b. 進去到redis目錄中執行phpize生成configure
phpize
如圖:
c. 執行configure(將配置檔案放到指定位置)
./configure --with-php-config=/usr/bin/php-config
d. make操作(編譯)
make install
如圖:
表示成功了
e. php.ini中加入redis擴充套件
先檢視一下php.ini的位置,使用下面的命令可以檢視php.ini的位置:
php --ini
如圖:
是在/etc/下的php.ini
編輯php.ini,在最後增加一行:extension = redis.so
f. 使用php -m檢視是否安裝成功
5-1 redis的連線操作
1. PHP的phpredis文件地址
2. 名稱空間
Redis類的名稱空間是根,即/,所以在實際開發中,要例項化redis類的時候,最好前面加上\,即 new \Redis()
3. 命令
phpredis的命令和引數基本和redis.io中的實際命令對應
4. 連線redis
<?php
/**
* 連線redis
*/
// 例項化redis
$redis = new \Redis();
// 連線redis
$redis->connect('127.0.0.1', 6379);
5-2 string型別操作
1. PHP設定string型別
<?php
/**
* string型別操作
*/
// 連線redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 先刪除對應的key
$redis->delete('string1');
// 設定string的值
$redis->set('string1', 'val1');
// 獲取string型別的值
$val = $redis->get('string1');
var_dump($val);
// 設定string的值為整數
$redis->set('string2', 4);
// 對string型別的整數進行加減操作
$redis->incr('string2', 2);
// 獲取string型別的值
$val = $redis->get('string2');
var_dump($val);
執行:
val1
6
5-3 list型別操作
1. PHP設定list型別
<?php
/**
* list型別操作
*/
// 連線redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 先刪除對應的key
$redis->delete('list1');
// 在list中加入元素
$redis->lPush('list1', 'val1');
$redis->lPush('list1', 'val2');
$redis->lPush('list1', 'val3');
// 推出最右的元素並且讀取出來
$val1 = $redis->rPop('list1');
var_dump($val1);
// 推出最右的元素並且讀取出來
$val2 = $redis->rPop('list1');
var_dump($val2);
執行:
val1
val2
5-4 set型別操作
1. PHP設定set型別
<?php
/**
* set 型別操作
*/
// 連線redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 先刪除對應的key
$redis->delete('set1');
// 設定set集合的值
$redis->sAdd('set1', 'val1');
$redis->sAdd('set1', 'val2');
$redis->sAdd('set1', 'val3');
$redis->sAdd('set1', 'val3');
// 獲取set集合中的數量
$number = $redis->sCard('set1');
var_dump($number);
// 獲取set集合中的所有值
$val = $redis->sMembers('set1');
var_dump($val);
注意:第13行重複插入val3不生效的
執行:
int(3)
array(3) {
[0]=>
string(4) "val1"
[1]=>
string(4) "val2"
[2]=>
string(4) "val3"
}
5-5 hash型別操作
1. PHP設定hash型別
<?php
/**
* hash 型別操作
*/
// 連線redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// hash 操作
// 先刪除對應的key
$redis->delete('hash1');
// 設定hash值
$redis->hSet('hash1', 'name', 'xiaoming');
$redis->hSet('hash1', 'age', '25');
$redis->hSet('hash1', 'gender', '1');
// 獲取hash值中的某個key
$name = $redis->hGet('hash1', 'name');
var_dump($name);
// 獲取hash值中的多個key
$val = $redis->hMGet('hash1', array('name', 'age', 'gender'));
var_dump($val);
執行:
string(8) "xiaoming"
array(3) {
["name"]=>
string(8) "xiaoming"
["age"]=>
string(2) "25"
["gender"]=>
string(1) "1"
}
5-6 sort set型別操作
1. PHP設定sort set型別
<?php
/**
* sort set 型別操作
*/
// 連線redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// sort set 操作
// 先刪除對應的key
$redis->delete('zset1');
// 在sort set中加入元素
$redis->zAdd('zset1', 100, 'xiaoming');
$redis->zAdd('zset1', 90, 'xiaohong');
$redis->zAdd('zset1', 930, 'xiaowagn');
// 從低到高輸出sort set的排行
$res1 = $redis->zRange('zset1', 0, -1);
var_dump($res1);
// 從高到低輸出sort set的排行
$res2 = $redis->zRevRange('zset1', 0, -1);
var_dump($res2);
執行:
array(3) {
[0]=>
string(8) "xiaohong"
[1]=>
string(8) "xiaoming"
[2]=>
string(8) "xiaowagn"
}
array(3) {
[0]=>
string(8) "xiaowagn"
[1]=>
string(8) "xiaoming"
[2]=>
string(8) "xiaohong"
}
相關推薦
【redis】redis的入門與應用【原創】
1-1 課程內容概要 1. 課程概要 Redis是php專案中使用到的主要快取服務,主要是參考慕課網的《redis的入門與應用_筆記》,這裡主要介紹: * redis的安裝使用 * PHP如何使用redis * redis最常也是必知必會的五大
【轉載】linux作業系統與應用程式的main函式
來源:https://blog.csdn.net/h542723151/article/details/52154871 這幾天一直在糾結: main函式是程式的入口,一個程式啟動後,經過bootloader的初始化就該經main函式進入C語言的世界,但是linux中每個應用程式的開始都是
Redis 入門與應用
目錄 一、Redis 安裝 1、下載 redis 2、安裝 redis 3、設定 redis 4、redis 服務常用的命令 5、測試 redis 二、RedisDesktopManager 的安裝與使用 1、下載與安裝 2、連線 redi
Redis的入門與應用
con predis 判斷 strong make 集合 ash -h 安裝redis擴展 概念: 遠程 基於內存的 非關系型數據庫 應用場景 緩存 隊列 數據存儲 安裝 安裝環境: 服務器:linux>cen
【轉載】Qt入門與提高:K02-01通過簡單exe介紹pro基本配置
版權宣告 --------------------------------------------------------------------------------------------------------------------- 作者: 女兒叫老白
20個熱門少兒程式設計網站與應用【家長必讀】
少兒程式設計是新的文化潮流,它涵蓋了兒童學習的方方面面:邏輯思維訓練、系統化思考訓練、問題解決能力訓練、團隊協作、創造性思維培養…你可以利用我們整理的這些得到廣泛認可的少兒程式設計網站教孩子學會程式設計,例如code.org、tynker.com和scrach Junior(兒童版本的scr
超幾何分佈與應用【轉載】
轉自:https://baike.baidu.com/item/%E8%B6%85%E5%87%A0%E4%BD%95%E5%88%86%E5%B8%83/4782968?fr=aladdin https://www.jianshu.com/p/13f46bebebd4 1.定義
【極客學院每日1課 】Java入門與常用技巧
Java是Android開發者必學的基礎程式語言。你的基礎怎麼樣? 遙想當年,小喬還未出嫁,小編在大學裡面,啃書本,聽教授在課堂上面雲裡霧裡的講啊,始終沒太弄明白,每週請學習委員一頓飯,才順利把作業提交上去,期末考試成績61分,是不是和我送教授的那罐鐵觀音有點關係??
大資料技術原理與應用 【筆記】
環境 前言 個人筆記 視訊筆記 正文 大資料 思路的轉變: 全樣而非抽樣 效率而非精確 相關而非因果 核心技術 分散式儲存 和 分散式處理 雲端計算 解決了:分散式儲存 、 分散式處理、虛擬化和多租戶; Hadoo
【Java 基礎 實驗-抽象類應用的練習】(抽象類Employee被SalariedEmployee和HourEmployee繼承 , 遍歷,Scanner 輸出)
http () bob alt scanner .com 系統 元素 aps 筆記總結: 1.Employee為抽象類,兩個子類進行繼承, public abstract double earning();兩個子類分別實現 2.Employee[] emps[i].
【劍指offer-第二版】部分題目與解答【C++版本】
20180612 求職在即,《劍指offer》作為大家都推薦的一本應試寶典,確實也有刷一刷的必要。很多題目都比較經典,也涵蓋了大多數的演算法和資料結構。把自己刷題的過程做一個總結,權當是一個筆記。當前還處在未完成狀態,希望自己能堅持做完。 我自己使用
細說Redis(一)之 Redis的資料結構與應用場景
原文: 細說Redis(一)之 Redis的資料結構與應用場景 這一篇文章主要介紹Redis的資料結構與應用場景 NOSQL之Redis Redis是一款由key-value儲存的軟體。說起NOSQL,有文件型、鍵值型、列型儲存、圖形資料庫。其中,在簡單的
全面解讀 NoSQL 資料庫 Redis 的核心技術與應用實踐
網際網路和Web的蓬勃發展正在改變著我們的世界,隨著網際網路的不斷髮展和壯大,企業資料規模越來越
Java 比較兩個物件是否相等【含字串,區分與不區分大小寫】
package com.gj5u.publics.util; /** * 物件比較工具 * * @author Rex * */ public class EqualsUtil {
Redis壓縮列表原理與應用分析
摘要 Redis是一款著名的key-value記憶體資料庫軟體,同時也是一款卓越的資料結構服務軟體。它支援
Redis的資料結構與應用場景
一、Redis簡介 Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協議、支援網路、可基於記憶體、分散式、可選永續性的鍵值對(Key-Value)儲存資料庫,並提供多種語言的 API。 Redis 通常被稱為資料結構伺服器,因為值(value)可以是字串(String)、雜湊(H
Docker入門與應用系列(六)Docker私有與公共鏡像倉庫
nbsp one 默認 span epo refers 1.8 png list 1.搭建私有鏡像倉庫Docker Hub作為Docker默認官方公共鏡像;如果想搭建自己的私有鏡像倉庫,官方提供registry鏡像,使搭建私有倉庫非常簡單1.1.1下載registry鏡像並
Docker入門與應用系列(八)Docker圖形界面管理之Shipyard
tps 數據庫 sock blog ocs body mage 代理 cell Shipyard基於Docker API實現的容器圖形管理系統,支持container、images、engine、cluster等功能,可滿足我們基本的容器部署需求可堆棧的Docker管理基於
Docker入門與應用系列(七)Docker圖形界面管理之DockerUI
post 簡單的 技術分享 name mage src 入門 .com 系統 1.dockeruiDockerrUI是一個基於Docker API提供圖形化頁面簡單的容器管理系統,支持容器管理、鏡像管理。1.1 下載鏡像 docker pull abh1nav/doc
Zookeeper Api(java)入門與應用(轉)
由於 sla 入隊 catch 其中 相同 獲得 保存 amp 如何使用 Zookeeper 作為一個分布式的服務框架,主要用來解決分布式集群中應用系統的一致性問題,它能提供基於類似於文件系統的目錄節點樹方式的數據存儲,但是 Zookeeper 並不是用來專門存儲數據的,它