redis 安裝 與錯誤解決辦法


redis 安裝與安裝中遇到的錯誤

redis 安裝

wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar xzf redis-4.0.11.tar.gz
cd redis-4.0.11
make

啟動服務端

src/redis-server

客戶端連接與測試

src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

redis常用命令

redis-cli

-h  指定遠程登陸ip
-p  指定遠程redis訪問端口
-n  指定庫b編號
-a  指定密碼

示例
./redis-cli  -h 127.0.0.1  -p 6379 -n 3  -a djx

遠程執行命令
清空所有的數據
./redis-cli  -h 127.0.0.1  -p 6379 -n 3  -a djx  flushall

redis 常用配置

redis設置密碼

臨時生效

       在命令行用  config set  requirepass  password  來進行設置。重啟redis后即失效。

[root@djx2 src]# ./redis-cli 
127.0.0.1:6379> config set  requirepass djx
OK
127.0.0.1:6379> config get  requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth djx
OK
127.0.0.1:6379> config get  requirepass
1) "requirepass"
2) "djx"

永久生效

  通過在redis的配置文件redis.conf 進行配置,在配置文件中有個參數: requirepass  這個就是配置redis訪問密碼的參數;

requirepass password

然后我們啟動的時候需要指定我們的配置文件進行啟動。 

redis-server  /etc/redis.conf

 redis 指定端口

默認是6379,我們可以更改成公司內部統一的端口。

port 6379

redis  指定監聽

redis 默認綁定的是 127.0.0.1 ,也就是只能本地訪問了,如果我們需要讓外網也可以進行訪問,那么我們需要更改默認的綁定。

bind  0.0.0.0

這樣我們就可以讓應用訪問了。

redis 指定日志文件存放位置

默認日志文件的存放位置是為空的,也就是直接在控制台輸出了。

我們可以在logfile中配置日志文件路徑。

logfile "/var/log/redis.log"

redis 指定數據存放位置(要指定)

在redis.conf 的 

# The filename where to dump the DB
dbfilename dump.rdb  #指定數據存放的文件名稱

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive. # # The Append Only File will also be created inside this directory. # # Note that you must specify a directory here, not a file name. dir ./ #指定數據存放的位置。
創建目錄
mkdir /opt/redis/data/ 在配置文件中指定目錄 dir /opt/redis/data/

redis 開啟rdbchecksum

該參數,在3.2版本和4.0版本是默認開啟的,但是在2.4版本中是沒有開啟的,該參數我們進行使用dump.rdb文件時是有作用的,因為在使用dump.rdb 的時候有該值是會效驗該文件的完整性。rdbchecksum設置為no的話就不會效驗該文件的完整性。

redis 后台運行

我們可以使用nohup和& 讓redis在后台正常運行,並寫入日志到/var/log/redis.log

nohup  ./src/redis-server   ./redis.conf  >>/var/log/redis.log 2>&1 &

安全配置

詳細見

  • 如果只是內網使用的話,我們可以只監聽本地,也就是 bind  127.0.0.1.
  • 設置訪問密碼,密碼設置復雜點,requirepass 
  • 使用專門的用戶來運行 Redis,不要使用 root。
    useradd -M -s /sbin/nologin [username]

     

  • 隱藏重要命令

  Redis 無權限分離,其管理員賬號和普通賬號無明顯區分。攻擊者登錄后可執行任意操作,因此需要隱藏以下重要命令:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL

  我們可以隱藏,也可以將這些命令設置為復雜的字符。

  隱藏命令和重命名命令需要在 配置文件中配置  redis.conf。

  隱藏命令

rename-command CONFIG ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""

  重命名命令

rename-command CONFIG FYConfigdjx
rename-command FLUSHALL FYFlushalldjx
rename-command FLSUHDB FYFlushdbdjx
rename-command SHUTDOWN  FYShutdowndjx

 

安裝中遇到的錯誤

錯誤1   gcc  編譯器沒有安裝

解決辦法 : 安裝gcc  編譯器

yum  install  gcc  -y

錯誤2  jemalloc/jemalloc.h: No such file or directory。 (注意,這里需要特別注意)

針對這個錯誤,我們可以在README.md 文件中看到解釋。

---------

Selecting a non-default memory allocator when building Redis is done by setting
the `MALLOC` environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc.

To force compiling against libc malloc, use:

    % make MALLOC=libc

To compile against jemalloc on Mac OS X systems, use:

    % make MALLOC=jemalloc

Verbose build
-------------

網上大部分解決辦法都是錯誤的,如下文:

centos(錯誤解決辦法)

make MALLOC=libc

正確解決辦法(針對2.2以上的版本)

make distclean  && make

導致出現這個錯誤的原因

  錯誤的本質是我們在開始執行make 時遇到了錯誤(大部分是由於gcc未安裝),然后我們安裝好了gcc 后,我們再執行make  ,這時就出現了jemalloc/jemalloc.h: No such file or directory。這是因為上次的

編譯失敗,有殘留的文件,我們需要清理下,然后重新編譯就可以了。

網上的解決辦法是有什么錯誤嗎?

  網上的解決辦法雖然最后也是可以成功安裝好 redis ,但是是有一些隱患的,首先我們要知道redis 需要使用內存分配器的, make  MALLOC=jemalloc  就是指定內存分配器為 jemalloc ,make MALLOC=libc 就是指定內存分配器為 libc ,這個是有安全隱患的,jemalloc 內存分配器在實踐中處理內存碎片是要比libc 好的,而且在README.md 文檔也說明到了,jemalloc內存分配器也是包含在源碼包里面的,可以在deps  目錄下看到 jemalloc 目錄。

以上就是我在安裝的時候遇到的問題,后續如果還有其他會繼續補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM