redis 安裝 與錯誤解決辦法

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

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

啓動服務端redis

src/redis-server

客戶端鏈接與測試centos

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設置密碼

臨時生效ide

       在命令行用  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"

永久生效ui

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

requirepass password

而後咱們啓動的時候須要指定咱們的配置文件進行啓動。 spa

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 目錄。

以上就是我在安裝的時候遇到的問題,後續若是還有其餘會繼續補充。

相關文章
相關標籤/搜索