駱神給我們講的redis,整堂課內心除了臥槽,好牛批,其實啥也沒記住??????????
以下是對這周redis的 學習做的一點小小的總結:
Redis定義
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。 [1]
Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意的對數據進行寫操作。由于完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。
- 由于是在Linux上操作的redis,所以這里我們先來說一下Linux環境下安裝軟件的過程。
1. 通過包管理工具安裝軟件。
定義:
(1). yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。
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實例
- 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.源代碼構建安裝
安裝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環境為例:
[root ~]# yum install gcc (安裝編譯環境)
[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 (進入安裝包)
[root ~]# ./configure —prefix=/usr/local/python37 —enable-optimizations (設置安裝路徑)
[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 (安裝相關依賴庫)
[root ~]# make && make install (編譯執行安裝文件)
…
[root ~]# ln -s /usr/local/python37/bin/python3.7 /usr/bin/python3 (給python指令文件創建快捷方式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指令創建快捷方式pip3)
[root ~]# pip3 —version
運行redis服務之前的一些常見命令
命令 & ---> 將命令放到后臺運行
jobs ---> 查看后臺運行的命令
fg %編號 ---> 將后臺命令放到前臺運行
Ctrl+z ---> 將前臺命令暫停并放到后臺
bg %編號 ---> 將暫停的命令在后臺運行
redis-server >> redis.log & --->后臺啟動服務器輸出重定向
netstat -ntlp --->查看程序端口 (常用端口 1024-65535 ,1024以下為著名端口)
(3306/6379---項目中一般不公開,容易被劫持挖礦)
redis-sever --requirepass 口令 >> redis.log & 后臺啟動redis并加口令
redis-server >> redis.log & --->后臺啟動服務器輸出重定向
netstat -ntlp --->查看程序端口 (常用端口 1024-65535 ,1024以下為著名端口)
(3306/6379---項目中一般不公開)
redis-sever --requirepass 口令 >> redis.log & 后臺啟動redis并加口令
修改端口 --port 端口號:
查看Redis進程
ps -ef | grep -E "redis-server"
一行代碼殺進程:
ps -ef | grep -E "redis-server" | grep -v "grep" |awk '{print $2}' |xargs kill
1.啟動 redis 客戶端,打開終端并輸入命令 redis-cli。該命令會連接本地的 redis 服務。
$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
redis-cli -p 端口 -h 主機
2.一些簡單命令
set username luohao ex 120 ---> 添加鍵值對
get username ---> 通過鍵查找值
ttl username ---> 查看鍵過期時間
expire username 300 ---> 設置鍵過期時間
keys * ---> 查看所有鍵
dbsize ---> 查看數據庫大小(鍵值對數量)
redis的核心數據類型:
1. 字符串
set key value ---> 添加鍵值對
get key ---> 通過鍵查看值
strlen key ---> 獲取字符串長度
append key value2 ---> 給字符串追加內容
mset key1 value1 key2 value2 ---> 添加多組鍵值對
mget key1 key2 ---> 查看多個鍵對應的值
incr key ---> 值加1
incrby key value ---> 值加上value
decr key ---> 值減1
decrby key value ---> 值減去value
getrange key start end ---> 獲取字符串指定范圍的子串
setrange key offset value ---> 修改字符串指定位置的內容
2. 哈希(表) - hash
hset key field value ---> 添加hash類型鍵值對
hmset key field1 value1 field2 value2 ---> 添加多組hash類型鍵值對
hget key field ---> 獲取hash類型字段對應的值
hmget key field1 field2 ---> 獲取hash類型多個字段對應的值
hgetall key ---> 獲取hash類型所有的字段和對應的值
hkeys key ---> 獲取hash類型所有的字段
hvals key ---> 獲取hash類型所有字段的值
hexists key field ---> 判斷hash類型某個字段是否存在
3. 列表 - list
lpush key value1 value2 value3 ---> 在左邊添加元素
rpush key value1 value2 value3 ---> 在右邊添加元素
lpop key ---> 從左邊移除一個元素
rpop key ---> 從右邊移除一個元素
lrange key start end ---> 查看列表指定范圍的元素
llen key ---> 查看列表元素個數
lindex key index ---> 查看列表指定位置元素
lrem key count value ---> 刪除列表中指定元素
4. 集合 - set
sadd key value1 value2 value3 ---> 添加元素
srem key value ---> 刪除元素
spop ---> 獲取隨機元素
scard key ---> 查看元素個數
smembers key ---> 查看所有元素
sismember key value ---> 查看集合中有沒有指定元素
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 ---> 查看元素對應的score
zincrby key value mem ---> 修改元素的score值
LBS應用 - Location-Based Service - 基于位置的服務
Linux系統啟停服務
~ 啟動:systemctl start nginx
service nginx start
~ 停止:systemctl stop nginx
service nginx stop
~ 重啟:systemctl restart nginx
~ 查看狀態:systemctl status nginx
~ 開機自啟:systemctl enable nginx
~ 禁用自啟:systemctl disable nginx