ubuntu上安装redis

 

from my typora

redis

 

 

linux下redis安装

下载

  • 首先到redis官网下载安装包:

redis[https://redis.io/download]

下载可选安装包unstablestable版本

分别对应不稳定版和稳定版

编译

然后执行tar -zxvf 命令

lsnu@lsnu-Aspire-AG1731:~/redis-5.0.0$ pwd
/home/lsnu/redis-5.0.0

进入文件夹进行make,编译操作:前提要先安装gcc

最后编译完成之后,会产生

安装

首先在usr/local下创建一个文件夹:

lsnu@lsnu-Aspire-AG1731:/$ cd /usr/local
lsnu@lsnu-Aspire-AG1731:/usr/local$ sudo mkdir redis
lsnu@lsnu-Aspire-AG1731:/usr/local$ ls
bin  etc  games  include  lib  man  redis  sbin  share  src

回到我们编译(make)过的redis目录下:

lsnu@lsnu-Aspire-AG1731:~/redis-5.0.0$ pwd
/home/lsnu/redis-5.0.0

然后安装redis:

$ sudo make PREFIX=/usr/local/redis install
cd src && make install
make[1]: Entering directory '/home/lsnu/redis-5.0.0/src'

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory '/home/lsnu/redis-5.0.0/src'

检查是否安装成功,是否存在bin目录:

lsnu@lsnu-Aspire-AG1731:~/redis-5.0.0$ cd /usr/local/redis/
lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ ls
bin

将redis源码(/home/lsnu/redis-5.0.0)中的配置文件拷贝到我们安装目录(/usr/local/redis)下:

lsnu@lsnu-Aspire-AG1731:~/redis-5.0.0$ sudo cp ./redis.conf /usr/local/redis/
lsnu@lsnu-Aspire-AG1731:~/redis-5.0.0$ ll /usr/local/redis/
总用量 76
drwxr-xr-x  3 root root  4096 11月  9 18:11 ./
drwxr-xr-x 11 root root  4096 11月  9 18:02 ../
drwxr-xr-x  2 root root  4096 11月  9 18:06 bin/
-rw-r--r--  1 root root 62155 11月  9 18:11 redis.conf

启动redis

前台启动

前台启动(不能保留进程,shell关闭就关闭)

lsnu@lsnu-Aspire-AG1731:~/redis-5.0.0$ sudo /usr/local/redis/bin/redis-server 

...
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 15502
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'           
...

后台启动

先关闭前台启动的redis:

ctrl + c

Redis is now ready to exit, bye bye…

首先要修改配置文件(我们刚才拷贝到/usr/local/redis目录下的):

lsnu@lsnu-Aspire-AG1731:/$ cd /usr/local/redis/
lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ ls
bin  redis.conf
lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ sudo vim redis.conf

# i 
# 修改其中的daemonize 从no 变成 yes
# daemonize no -> daemonize yes
# wq

后台启动redis:

lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ pwd
/usr/local/redis

lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ ./bin/redis-server ./redis.conf 
15545:C 09 Nov 2018 18:26:36.140 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15545:C 09 Nov 2018 18:26:36.140 # Redis version=5.0.0, bits=64, commit=00000000, modified=0, pid=15545, just started
15545:C 09 Nov 2018 18:26:36.140 # Configuration loaded

通过服务查看redis是否启动:

lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ ps -ef | grep -i redis
lsnu     15546     1  0 18:26 ?        00:00:00 ./bin/redis-server 127.0.0.1:6379
lsnu     15552 15247  0 18:27 pts/14   00:00:00 grep --color=auto -i redis

以上第一个:15546表示我们系统中的redis的进程

第二个表示:一个用户通过虚拟终端(pts)pts/14执行了grep --color=auto -i redis的命令

redis的端口是6379,通过端口查看redis是否启动:

lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ sudo lsof -i:6379
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 15546 lsnu    6u  IPv4  53859      0t0  TCP localhost:6379 (LISTEN)

在我们的ubuntu上开启6379端口:

lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ sudo ufw allow 6379
防火墙规则已更新
规则已更新(v6)

ubuntu防火强操作,请参照,ubuntu防火墙操作

停止redis

# redis自己的方式
/usr/local/redis/bin/redis-cli shutdown

# 或者:linux进程管理方式
pkill redis-server

开始使用

确认当前路径:

lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ pwd
/usr/local/redis 

简单使用redis:

# 通过 bin下的redis-cli进入终端操作
lsnu@lsnu-Aspire-AG1731:/usr/local/redis$ ./bin/redis-cli 
# set key value 
127.0.0.1:6379> set name mzy
OK
# get key 
127.0.0.1:6379> get name
"mzy"
127.0.0.1:6379> 

退出:exit

总结

# 在redis安装目录的根目录下
# 启动redis
./bin/redis-server ./redis.conf
# 启动客户端
./bin/redis-cli
# 这样直接操作的都是内存,不是数据库,数据库会慢半拍

# 测试数据库(redis)是否连通
# 除了我们通过set key value,get key的方式可以测试
# 还可以ping,证明连通了
127.0.0.1:6379> ping
PONG

测试redis

set、get、del

127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name mzy
OK
127.0.0.1:6379> get name
"mzy"
127.0.0.1:6379> set name zxr
OK
127.0.0.1:6379> get name
"zxr"
127.0.0.1:6379> del name 
(integer) 1
127.0.0.1:6379> get name
(nil)

keys *:拿到所有键值对

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key1 aaa
OK
127.0.0.1:6379> set key2 bbb
OK
127.0.0.1:6379> set key3 ccc
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key1"
3) "key3"

redis 设置密码

# pwd 为 /usr/local/redis 根目录下
# 以下newPassword处为你要设置的新密码
# 方式一:在redis命令行客户端进行设置
127.0.0.1:6379> config set requirepass newPassword

# 在redis配置文件,redis.conf中寻找到 requirepass foobared  
vim redis.conf -> esc -> /requirepass -> 
# 选择一个合适的空白位置添加
requirepass newPassword


# 重启服务
/usr/local/bin/redis-cli shutdown
/usr/local/bin/redis-server /usr/local/redis.conf

# 尝试登陆
$ ./bin/redis-cli -h 127.0.0.1 -p 6379 
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

# 加上密码:可使用-a 或者 -u
$ ./bin/redis-cli -h 127.0.0.1 -p 6379 -a newPassword
127.0.0.1:6379> keys *
1) "name"
2) "x"
3) "num"
4) "name1"

# 以上的-h和-p可以不写;不用专门指定IP和端口号(配置文件中都是有的)
$ ./bin/redis-cli -a newPassword # -a或者-u

# 除了以上的登陆方式,还可以在进入客户端命令行之后,再进行校验
127.0.0.1:6379>auth newPassword # 同样可以

# ------------------------------
# 如果Redis服务器,使用了集群。除了在master中配置密码外,也需要在slave中进行相应配置。
# 在slave的配置文件中找到如下行,去掉注释并修改与master相同的密码即可:
# masterauth master-password
masterauth newPassword

redis设置局域网或外网访问

# 同样在redis.conf下,找到 bind 127.0.0.1 将其修改为 0.0.0.0
vim redis.cnf -> esc -> /127.0.0.1 -> bind 0.0.0.0

redis 遇到的第一个问题

(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

redis默认是通过RDB方式进行持久化的,以上错误就是redis不能将数据持久化到外存中造成的错误!

(我猜测我出现这个原因是因为我在我的ubuntu上启动我的redis的时候,没有加上sudo,导致redis没有权限往硬盘上刷数据,我重启加上sudo就好了)

网上的方法,如果你执意要使用,就是关闭这个提醒,掩耳盗铃而已,但是如果你的数据不重要,没有持久化的必要,也可以强行使用,抛弃持久化的功能。

运行:

127.0.0.1:6379> config set stop-writes-on-bgsave-error no
posted @ 2018-11-09 18:43  五彩世界  阅读(237)  评论(0编辑  收藏  举报