作業系統篇之Linux命令操作和redis安裝以及基本使用
- 2019 年 10 月 5 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/zhao1299002788/article/details/100185441
電腦作業系統 : windows7,8,10,xp,win98 作業系統 : linux ax unix 以後開發項目是部署在伺服器上,伺服器一般採用linux. linux的優點:系統穩定,操作速度快,系統安全.. linux可以部署 : 資料庫 tomcat 快取(redis)..... 1.如果安裝虛擬機,必須把金山毒霸,360防護退出(禁用vmware程式) 指令: 通用語法: 命令後面不接 ./ 或者 ../ 表示是當前目錄. ./ 表示當前目錄 ../表示上一層目錄 /表示根目錄 clear清屏 磁碟管理: ls list 顯示目錄下的數據: -l : 詳細列別 -r : 反序 -t : 日期 需要記住的是 ll ll -a -a : 表示所有文件都顯示. cd change 切換目錄: 路徑滿足通用語法. ~ 表示 : 當前用戶的目錄,cd~回到用戶目錄 cd 跟 cd~一樣. cd - : 回調剛才所在目錄. pwd : 顯示當前所在目錄. mkdir -p : 批量創建文件夾 文件瀏覽: cat : 顯示所有的內容,如果內容過多,沒辦法看完. cat 文件名. more : 查詢文件的內容. more 文件 空格 下一頁 b 上一頁 回車 一行 q 退出 less 查看文件內容 less 文件 空格 下一頁 b 上一頁 回車 一行 q 退出 進入以後可以進行 在翻頁的時候 進行(/字元串 向下搜索,?字元串 向上搜索) ?字元串 向上搜索 /字元串 向下搜索 參數: -m 百分比 -N 行號 tail 查看文件末尾內容: tail-數字 文件名 查看最後指定的條數. 參數 -f循環讀取. (重要 可以動態查看文件末尾的內容,開發中往日誌里寫數據) 此處模擬過程 往一個文件動態循環寫數據,使用tail指令動態查看數據. ping 用來測試連通性. ping 127.0.0.1>ip.log 將ping的命令列印內容輸出到文件中去 例如: 127.0.0.1>ip.log & : 表示後台運行 tail -f ip.log : 循環讀取文件ip.log裡面的內容,並顯示在控制台上 文件操作: cp 複製 複製並重命名 copy cp 文件 路徑 表示複製 cp 文件 路徑/新文件名稱 表示複製並重命名 -r : 表示遞歸 mv move mv 文件 路徑 表示 移動. mv 文件 路徑/新文件名稱 表示移動並重命名. -f表示強制 rm remove 刪除 rm-fr 文件名 可以刪除一切 find 查找 find 路徑 -name 文件名稱 find 路徑 -name '*...' 文檔編輯: vi vim 命令一摸一樣 vi 相當於txt vim 相當於 note++ vim : 有三種模式 一般模式 : 能看不能輸入內容,進入文件默認是一般默認,按i或者a或者o切換,到編輯默認 按:切換到行底模式. 編輯模式 : 可以輸入內容 如果編寫完了,按esc表示退回到一般模式. 行底模式 : 可以輸入 registry-zookeeper:wq 退出保存 :q! 退出不保存. 退出,先按esc ,再按 Shift+: ,q! 或者wq 一般模式有特點: yy複製 p 粘貼 dd 刪除一行. nyy 複製多行 ndd刪除多行. gg 第一行 shift + g 最多一行. 管道 | 作用 : 將兩個命令合成一個命令 命令1|命令2 grep 正則匹配 過濾 語法 1: grep-i 過濾的字元 文件名稱 語法 2: 命令1|grep-i 過濾的字元 需要匹配不同內容 輸出不同的值 前面命令1的內容 作為了後面過濾的依據. 系統命令: ps-ef 查看所有的進程 以後的用法: ps-ef|grep-i 過濾的字元 kill 殺死 kill pid 終止進程 kill-9 pid 殺死進程 ifconfig 查看當前ip ping 測試連通性 備份壓縮: 參數不可以改變順序: tar -zcvf 文檔名 文件 壓縮 tar -zxvf 文檔名 解壓縮 關機重啟(忽略) 重啟 reboot 關機 halt shutdown -r 時間 重啟 shutdonw -h 時間 關機 文件許可權 chmod 接上數字 文件 chmod 000 刪除所有許可權 comod 777 添加所有許可權 一個7 表示三個許可權 4 2 1 r 可讀 2的2次方 4 w 可寫 2的1次方 2 x 可執行 2的0次方 1 例如: drwxr-xr-x. 2 root root 4096 8月 11 04:23 a : 第一個字母代表是文件夾或者文件, d代表文件夾,-代表文件 -rw-r--r--. : rw- 表示用戶 ; r-- 表示用戶名組 ; r-- 表示其他 官方文檔解釋 : -rwxrw-r-- 第一位 : 文件類型(d目錄,-普通文件 ,| 鏈接文件(桌面快捷方式)); 第2-4位: 所屬用戶許可權,用u(user)表示; 第5-7位: 所屬組許可權,用g(group)表示; 第8-10位: 其他用戶許可權,用o(other)表示; 第2-10位: 表示所有的許可權,用a(all)表示; r 可讀許可權 w 可寫許可權 x 可執行許可權 修改許可權:- 表示去除許可權 chmod u-rwx aaa.tar;表示把用戶許可權變成--- chmod g-rwx aaa.tar;表示把用戶組許可權變成--- chmod o-rwx aaa.tar;表示把其他用戶許可權變成--- chmod ugo+rwx aaa.tar : 表示給這個文件加上應有許可權 chmod 000 aaa.tar ; 表示去除文件所有許可權 chmod 777 aaa.tar; 表示給文件加上應有許可權 安裝過程注意事項 : 使用CRT連接不上linux,存在以下幾種情況: vim/etc/sysconfig/netword-scripts/ifcfg-eth0 1 . 配置網路,自動連接勾選. 2 . 360或金山毒霸沒關. 3 . 本地虛擬機伺服器沒開啟. 4 . 本地適配沒有打開. 5 . Linux配置環境 網卡沒有開機自動啟動. ONBOOT = yes : 開機自動啟動網卡 Linux環境可以按照伺服器,應用伺服器,tomcat ,需要jdk,mysql,快取redis 統一步驟: 1.需要上傳壓縮包. 2.解壓. 3.安裝. rpm -qa 查看. rpm -ivh 程式名稱 安裝. rpm -Uvh 程式名稱 更新. rpm -e 刪除 --nodeps 不刪除依賴. 例子: 查看系統中是否安裝有jdk : rpm -qa | grep -i jdk 如果有就刪除jdk,刪除了以後再安裝 rpm -e 上面查到的jdk全稱 yum remove 聯網自動刪除數據 yum install 聯網自動安裝數據 cm95DvStxaqflMVE : 自動生成的秘密 每個人都不一樣 gPKufF50DIn720ua 我的MySql秘密 NoSql : NoSql 特點: 在大數據存取上具備關係型資料庫無法比擬的性能優勢: 1.易擴展: NoSql 資料庫種類繁多,但是一個共同的特點都是去掉關係資料庫的關係型特性.數據之間 無關係,這樣就非常容易擴展.也無形之間,在架構的層面上帶來了可擴展的能力. 2.大數據量,高性能 NoSql 資料庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀.這得益於它的 無關係性,資料庫的結果簡單. 3.靈活的數據模型 NoSql 無需事先為要存儲的數據建立欄位,隨時可以存儲自定義的數據格式.而在關係數 據庫里,增刪欄位是一件非常麻煩的事情.如果是非常大數據量的表,增加欄位簡直就是 一個噩夢.這點在大數據量的Web2.0時代尤其明顯. 4.高可用 NoSql 在不太影響性能的情況,就可以方便的實現高可用的架構.比如Cassandra,HBase 模型,通過複製模型也能實現高可用. MySql 關係型資料庫 : 泛指資料庫中數據表,具有一定關係. Redis 非關係性資料庫 : 資料庫中數據是沒有關係(用作快取,快取伺服器) db4o 文件資料庫 : 數據是保存在文件中. 短鏈接 : 打開一次連接 關閉. 長鏈接 : 連接池 打卡一次不關閉. Redis : 用來存儲數據 將數據存到記憶體中 用於處理大數據. Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫.它通過提高多種鍵值數據類型來適應不同 場景下的存儲需求,目前為止Redis支援的鍵值數據類型如下: 1.字元串類型 2.散列類型 3.列表類型 4.集合類型 5.有序集合類型 hibernate : 一級快取 內置快取. hibernate : 二級快取(需要其他配置) 使用redis替換. redis 安裝 需要C的編譯環境. Redis的後台啟動方式: 1.如果需要後台啟動 需要從redis配置目錄中 copy一個文件 redis.conf cp redis.conf /usr/local/src/redis 2.修改配置文件 daemonize yes(修改成yes) 以後開發中命名有規範的,項目名稱_業務名稱_表名稱_欄位名稱_0 1 Constant 常量池 一個項目需要有自己的常量池. public static final 項目名稱_業務名稱_表名稱_欄位名稱_="" 數據結構: redis 是一種高級的key-value的存儲系統,其中value支援五中數據類型. 1.字元串(String) 2.哈希(hash) 3.字元串列表(list) 4.字元串集合(set) 5.有序字元串集合(sorted set) 而關於key的定義呢,需要大家注意的幾點: 1:key不要太長,最好不要超過1024個位元組,這不僅會消耗記憶體還會降低查找效率 2.key不要太短,如果太短會降低key的可讀性. 3.在項目中,key最好有一個統一的命名規範. String 賦值 set key value 取值 get key getset key value 獲得並賦值 刪除 del key 其他 遞增 incr key 遞減 decr key 增加多少 incrby key 數字 減少多少 decrby key 數字 追加 append key 拼接的字元 Hash 賦值: hset 集合名稱 欄位的名稱 欄位的值 只能賦值一個 hmset 集合名稱 欄位的名稱 欄位的值 欄位的名稱 賦值多個 取值 hget 集合的名稱 欄位名稱 獲得一個欄位值 hmget 集合的名稱 欄位名稱 [欄位名稱 欄位名稱]... 獲得指定多個欄位值 hgetall 集合名稱 獲得所有的欄位值 刪除 del 集合名稱 刪除集合 通用語法(其他集合一樣可以使用) hdel 集合名稱 欄位名稱[....] 其他 增加指定數字 hincrby 集合名稱 欄位名稱 增加的數字 判斷集合中是否含有某個欄位 hexists 集合 欄位 長度 hlen 集合 獲得所有的key hkeys 集合 獲得所有的value hvals 集合 顯示集合中的key和value hgetall 集合 類載入器的作用 : 將類載入到記憶體中形成class對象 , 保證虛擬機中就只有一個對象. 三個類載入器 : 應用載入器(主要載入tomcat的jar包和自己放的一些jar包,載入自己創建的類的class文件) , 擴展載入器(載入一些特殊的jar包,如果公司需要放jar包也放在這裡面) , 引導類載入器(主要是把環境載入進來). 應用類載入器繼承擴展類載入器繼承引導類載入器. 載入機制 : 全盤負責機制 , 父類委託機制 System.out.println(ClassLoaderDemo.class.getClassLoader()); System.out.println(ClassLoaderDemo.class.getClassLoader().getParent()); System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent()); rt.jar 表示運行時 , 載入不同位置的東西. String parths = System.getProperty("sun.boot.class.path"); String[] arr = parths.split(";"); for(String string : arr) { System.out.println(string); } System.out.println(String.class.getClassLoader()); public class ClassLoaderDemo { /*public static void main(String[] args) { //類載入器的作用: 將類載入到記憶體中形成class對象 保證虛擬機中就只有一個對象 //三個類載入器 : 應用類載入器 擴展類載入器 引導類載入器(不是類 C 調用批處理 載入我們數據Class對象) //載入機制:全盤負責 委託機制 //System.out.println(ClassLoaderDemo.class.getClassLoader()); //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent()); //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent()); //System.out.println(DNSNameService.class.getClassLoader()); //rt.jar 表示運行時 載入不同位置的東西 String parths = System.getProperty("sun.boot.class.path"); String [] arr = parths.split(";"); for (String string : arr) { System.out.println(string); } System.out.println(String.class.getClassLoader()); }*/ /*public static void main(String[] args) { //類載入器的作用: 將類載入到記憶體中形成class對象 保證虛擬機中就只有一個對象 //三個類載入器 : 應用類載入器 擴展類載入器 引導類載入器(不是類 C 調用批處理 載入我們數據Class對象) //載入機制:全盤負責 委託機制 //System.out.println(ClassLoaderDemo.class.getClassLoader()); //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent()); //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent()); //System.out.println(DNSNameService.class.getClassLoader()); //rt.jar 表示運行時 載入不同位置的東西 String parths = System.getProperty("java.ext.dirs"); String [] arr = parths.split(";"); for (String string : arr) { System.out.println(string); } //擴展類載入器 一般公司使用 System.out.println(DNSNameService.class.getClassLoader()); }*/ public static void main(String[] args) { //類載入器的作用: 將類載入到記憶體中形成class對象 保證虛擬機中就只有一個對象 //三個類載入器 : 應用類載入器 擴展類載入器 引導類載入器(不是類 C 調用批處理 載入我們數據Class對象) //載入機制:全盤負責 委託機制 //System.out.println(ClassLoaderDemo.class.getClassLoader()); //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent()); //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent()); //System.out.println(DNSNameService.class.getClassLoader()); //rt.jar 表示運行時 載入不同位置的東西 String parths = System.getProperty("java.class.path"); String [] arr = parths.split(";"); for (String string : arr) { System.out.println(string); } //應用載入器 負責載入tomcat的路徑jar 還有下面兩個 //E:Usershzbworkspaceee66_day48buildclasses //E:Usershzbworkspaceee66_day48WebContentWEB-INFlibjedis-2.7.0.jar System.out.println(ClassLoaderDemo.class.getClassLoader()); } } List 賦值:lpush key value1[value2......] 從鏈表的左邊添加 如果key不存在就創建 rpush key value1[value2......] 從鏈表的右邊添加 如果key不存在就創建 取值 lrange key start end 查詢數據 start表示開始索引 end表示結束索引 默認情況. end 可以為負數 負數表示 從右邊開始數 刪除 lpop key 從左邊彈出 rpop key 從右邊彈出 其他 llen key 集合長度大小 lpushx key value1 添加鏈表的左邊 如果key不存在 不會進行創建 rpushx key value1 添加鏈表的右邊 如果key不存在 不會進行創建 lrem key count value 刪除集合中多少個元素 count > 0 從左往右刪除count個 count = 0 刪除所有指定的value值 count < 0 從右往左刪除count個 lset key index value 設置索引值為index 的value值 linsert key before | after 指定的元素 添加的值 在指定元素前後添加值 rpoplpush 集合1 集合2 將集合 1 的右邊彈出 添加到集合 2 的左邊 (隊列 先進先出) Set 賦值 : sadd key value [value...] 添加 取值 : smembers key 獲得集合的成員 刪除 srem key value [value...] 刪除指定的成員 其他 sismember key member 判斷集合中是否存在這個成員 集合的運算 差集 將集合 1 減去集合 2 剩下的是集合 1 的元素. sdiff key1 key2 交集 取兩個集合共有的一部分元素 sinter key1 key2 並集 取兩個集合所有的元素 但需要去重 sunion key1 key2 集合的運算並存儲 差集 將集合 1 減去集合 2 剩下的是集合 1 的元素 將結果存到newkey中 sdiffstore newkey key1 key2 交集 取兩個集合共有的一部分元素 將結果存到newkey中 sinterstore newkey key1 key2 並集 取兩個集合所有的元素 但需要去重 將結果存到newkey中 sunionstore newkey key1 key2 scard key 查看集合中多少個成員 srandmember key 隨機返回一個成員 Sortset 賦值 : zadd key sore1 member1 sore2 member2 ... 取值 : zrange key start end [withscores] 返回指定返回的數據 默認升序 start 表示開始索引 end表示結束索引 默認情況 end 可以為負數 負數表示 從右邊開始數 zrevrange key start end [withscores] 返回指定返回的數據 降序 刪除 zrem key member 其他 zscore key member 返回對應成員的分數 zcard key 返回集合的長度 刪除一定返回內的數據 按照排名 zremrangebyrank key start end 刪除一定返回內的數據 start end zremrangebyscore key minscore maxscore 按照分數查詢一定返回內的數據 zrangebyscore key minscore maxscore [withscores] [limit startindex pagesize] 給指定成員添加分數 zincrby key 分數 value 值 獲得區間分數內的個數 zcount key minscore maxscore 返回成員在排名的中的位置 zrank key value 升序 zrevrank key value 降序 通用操作 keys * 表示查看所有的key ? 表示佔位符 Del key 刪除指定的key Exists key 查看key是否存在 Rename key newKey 修改名稱 Type key 查看類型 Expire key 設置過期時間 Ttl 查看過期時間 -2 已結失效 -1 永不失效 >0 還有多少秒之後失效 Jedis Jedis java 中訪問redis 環境 操作命令對象 如果需要在java環境中使用redis 必須導入jar包 commons-pool-2.3.jar jedis-2.7.0.jar jedis 操作: public static void main(String[] args) { //創建redis對象 java表示的是jedis對象 Jedis jedis = new Jedis("192.168.40.199",6379); String nickname = jedis.get("nickname"); System.out.println(nickname); //重寫設置 jedis.set("nickname","吉吉");//以後設置都是json字元串 nickname = jedis.get("nickname"); System.out.println(nickname); jedis.close(); } Jedis 連接池: public static void main(String[] args) { //需要增加配置 JedisPoolConfig poolConfig = new JedisPoolConfig(); //設置其他配置 //最小空閑數 (例如在訪問資料庫高分期的時候,會創建很多連接給予使用,當連接池連接數量用完了以後,會繼續產生連接,保證連接池有三個空閑連接,以備不時只需) poolConfig.setMinIdle(3); //最大空閑數 (例如在訪問資料庫低分期的時候,連接池會有很多閑置的連接,這時會保證閑置連接不能超過30個,如果超過去30個,超過的會銷毀) poolConfig.setMaxIdle(30); //獲得連接池 JedisPool jedisPool = new JedisPool(poolConfig,"192.168.40.199",6379); //通過連接池 可以獲得jedis對象 Jedis jedis = jedisPool.getResource(); String nickname = jedis.get("nickname"); System.out.println(nickname); jedis.close(); } 1.8Redis特性 1.8.1多資料庫概念 默認情況下 我們操作時操作第一個 Select 索引 選擇資料庫 Move key 索引 將key 移動到對應的資料庫下 退出 quit exit ctrl + c Dbsize key的數量 Info 資訊 Flushdb 刪除當前資料庫的所有key Flushall 刪除所有資料庫的key 1.8.2消息訂閱和發布 Subscribe 頻道名稱 表示 訂閱某個頻道 Psubscribe 頻道名稱 表示訂閱多個頻道 Publish 頻道名稱 內容 往頻道內發布內容 1.8.3事務(批量處理) Multi 開啟事務 Exec 提交 Discard 回滾事務 提交事務時 如果中間報錯 不會回滾 繼續操作 1.9持久化 Redis的數據是在記憶體中 持久化就是將數據保存在磁碟上(序列化 鈍化) Redis中提供了兩種持久化機制 : 將數據持久化起來 為什麼要有資料庫? 資料庫能保存數據 RDB : 快照 redis默認機制 我們不處理 優點:恢復速度快 缺點:存在資料庫丟失情況 AOF : 記錄日誌 將命令行保存起來 優點:不存在數據丟失 缺點:恢復速度太慢 如果想要使用AOF 需要手動配置 檢查AOF機制是否存在 1.配置AOF 2.打開客戶端 進行操作數據 3.清空資料庫 4.將redis 伺服器執行緒關閉(看日誌文件 修改日誌文件) 5.啟動redis 看數據是否能恢復 如果需要修改修改埠號進行對外開放進入:vim /etc/sysconfig/iptables 重新啟動伺服器 : service iptables restart 進入redis安裝目錄下 cd /usr/local/redis /usr/local/src/redis install 進入bin目錄下的批處理進行登錄 ./bin/redis-cli ./redis-server ../redis.conf 9.進入redis目錄 cd /root/baidu/redis/redis-3.0.0 10.將redis下的conf文件拷貝到redis下 cp redis.conf /usr/local/redis 11.進入redis的bin目錄下 cd /usr/local/src/redis/bin 12.啟動 ./redis-server ../redis.conf 後端啟動 vim /usr/local/redis/redis.conf 1.找到一下程式碼 修改成yes daemonize no ==>>daemonize yes 2.啟動時,指定配置文件 cd /usr/local/redis/ ./bin/redis-server ./redis.conf