redis 安裝 和 基本操作

Redis 簡介

Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。

Redis 是屬於非關係型數據庫
1.數據比模型較簡單
2.需要靈活性更強的IT系統
3.對數據庫性能要求較高
4.不需要高度的數據一致性
5.對於給定的key,比較容易映射覆雜值的環境

Redis簡介

優點:

對數據高併發讀寫
對海量數據的高效率存儲和訪問
對數據的可擴展性和高可用性

缺點:

redis(ACID處理非常簡單)
ACID,指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支持事務(Transaction)的數據庫,必須要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。
無法做到太複雜的關係型數據庫模型
Redis持久化兩種機制rdb和aof

Redis有着更爲複雜的數據結構並且提供對他們的原子性操作,這是一個不同於其他數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。
Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,因爲數據量不能大於硬件內存。在內存數據庫方面的另一個優點是,相比在磁盤上相同的複雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因爲他們並不需要進行隨機訪問。

redis的安裝

安裝包

這裏是安裝 reids 服務端和客戶端界面操作工具的安裝包:

鏈接:https://pan.baidu.com/s/1nQ1TEUmSD2Xt70orjP8PxA
提取碼:h8t9

redis的服務端安裝

gcc編譯c的,因爲redis是c編寫的,所以我們先安裝下gcc

yum install gcc-c++

下載redis壓縮包 並解壓

reids的各個版本的下載地址:
http://download.redis.io/releases/

第一種方式是 在線安裝
yum -y install wget
wget http://download.redis.io/releases/redis-5.0.2.tar.gz

第二種是直接去reis官網下載離線安裝包,上傳到Linux中,推薦使用第二種 (在網速不是很快的情況下,我百度雲中已經提供了安裝包)。

Tar -xvf redis-5.0.2.tar.gz(解壓)

編譯
cd redis-5.0.2/(進入目錄)
Make(編譯)

修改配置文件 redis.conf
redis-5.0.2 /redis.conf

將配置文件中的 daemonize 修改成 yes 。這是 開啓守護進程,不開啓的話,不能做其他操作
#daemonize no
daemonize yes

啓動 redis
可以操作如下(指定redis.conf)
./src/redis-server redis.conf
在這裏插入圖片描述
使用reids客戶端工具 reids-cli 測試是否成功
./src/redis-cli (使用redis)
連接上後運行ping 命令。如果輸出如下結果就代表成功了:
在這裏插入圖片描述

可視化管理工具redis-desktop-manager安裝與配置

安裝比較簡單,點擊安裝文件 下一步 下一步就好了,這裏主要講配置,我們使用客戶端工具連接肯定是成不了的。要進行一些配置才能成功(我百度雲中已經提供了安裝包)。

修改 redis.conf 配置文件

# 這裏是代表只能用本機連接
#bind 127.0.0.1                                       #註釋這一行(69行)

#找到下面這一行並去除註釋,並添加密碼(396行)
#requirepass foobared                                 #修改前
requirepass root                                    #修改後

注:配置完成密碼後,以後登錄就密碼按下面的命令進行登錄
./redis-cli -h 127.0.0.1 -p 6379 -a root

開放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
更新防火牆規則
firewall-cmd --reload

重啓redis或Linux
service redis-server restart

reboot

測試使用客戶端工具連接
在這裏插入圖片描述
在這裏插入圖片描述
下面代表連接成功:
在這裏插入圖片描述
當我們連接上後就可以進行一些操作,這裏就簡單演示一些查看指定數據庫的 key(如果你剛剛安裝,數據庫中是沒有數據的):
在這裏插入圖片描述

redis 基本操作

說明: 這裏是使用 redis-cli 進行命令行操作

redis db0-15 的概念

redis有沒有什麼方法使不同的應用程序數據彼此分開同時又存儲在相同的實例上呢?就相當於mysql數據庫,不同的應用程序數據存儲在不同的數據庫下。

redis下,數據庫是由一個整數索引標識,而不是由一個數據庫名稱。默認情況下,一個客戶端連接到數據庫0。redis配置文件中下面的參數來控制數據庫總數:

databases 16

可以通過下面的命令來切換到不同的數據庫下

select 2

隨後,所有的命令將使用數據庫3,知道你明確的切換到另一個數據庫下。

每個數據庫都有屬於自己的空間,不必擔心之間的key衝突。

不同的數據庫下,相同的key取到各自的值。
flushdb命令清除數據,只會清除當前的數據庫下的數據,不會影響到其他數據庫。
flushall命令會清除這個實例的數據。在執行這個命令前要格外小心。

redis的數據類型

Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)
及zset(sorted set:有序集合)。

String(字符串)

string 是 redis 最基本的類型,你可以理解成與 Memcached 一模一樣的類型,一個 key 對應一個 value。
string 類型是二進制安全的。意思是 redis 的 string 可以包含任何數據。比如jpg圖片或者序列化的對象。
string 類型是 Redis 最基本的數據類型,string 類型的值最大能存儲 512MB。

基本操作(curd)

設置值set  key value
獲取值 get key
刪除值 del key

設置值定時有效過時則會返回nil(在reids中nil代表null的意思)

setex key seconds value

使用setrange 替換字符 offset 表示從第幾位開始value是替換的值

 setrange key offset value

如果不存在就賦值返回爲1,如果存在就返回爲0

setnx key value

注意:一個鍵最大能存儲 512MB。

Hash(哈希)

Redis hash 是一個鍵值(key=>value)對集合。
Redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特別適合用於存儲對象。

實例

redis 127.0.0.1:6379> HMSET cpc field1 "Hello" field2 "World"
"OK"
redis 127.0.0.1:6379> HGET cpc field1
"Hello"
redis 127.0.0.1:6379> HGET cpc field2
"World"

注意:實例中我們使用了 Redis HMSET, HGET 命令,HMSET 設置了兩個 field=>value 對, HGET 獲取對應 field 對應的 value。每個 hash 可以存儲 232 -1 鍵值對(40多億)。

List(列表)

Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。像java裏的隊列
Lpush從頭部添加一個元素
Rpush從尾部添加一個元素

實例

redis 127.0.0.1:6379> lpush test redis
(integer) 1
redis 127.0.0.1:6379> lpush test mongodb
(integer) 2
redis 127.0.0.1:6379> lpush test rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange test 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

注:列表最多可存儲 232 - 1 元素 (4294967295, 每個列表可存儲40多億)。

Set(集合)

Redis的Set是string類型的無序集合。
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。

**sadd 命令:**添加一個 string 元素到 key 對應的 set 集合中,成功返回1,如果元素已經在集合中返回 0,如果 key 對應的 set 不存在則返回錯誤。

sadd key member

實例:

redis 127.0.0.1:6379> sadd myset redis
(integer) 1
redis 127.0.0.1:6379> sadd myset mongodb
(integer) 1
redis 127.0.0.1:6379> sadd myset rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd myset rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers myset 

1) "redis"
2) "rabitmq"
3) "mongodb"

注意:以上實例中 rabitmq 添加了兩次,但根據集合內元素的唯一性,第二次插入的元素將被忽略。 set 集合中最大的成員數爲 232 - 1(4294967295, 每個集合可存儲40多億個成員)。

zset(sorted set:有序集合)

Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。
zset的成員是唯一的,但分數(score)卻可以重複。

zadd 命令
添加元素到集合,元素在集合中存在則更新對應score

zadd key score member 

實例:

redis 127.0.0.1:6379> zadd myzset 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd myzset 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd myzset 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd myzset 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE myzset 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章