美文网首页
redis第一章:简介和安装

redis第一章:简介和安装

作者: 阿桃_28e7 | 来源:发表于2020-02-02 21:28 被阅读0次

    redis简介和安装

    简介和特点

    redis(remote ditionary server)是开源、高性能、基于内存的轻量级键值的存储系统,于2009年,由意大利一家公司的创始人Salvatore Sanfilippo开源发布,它具有以下特点:

    1. 丰富的数据结构:(redis重要贡献者Matt Stancliff说,将redis称作一种数据机构服务器更为恰当)
      • 字符串
      • 列表
      • 集合
      • 有序集合
      • 散列
    2. 高性能存储且可持久化: 10万键值/1秒
    3. 功能丰富: 即是缓存系统(TTL),又是消息队列,还支持“pub/sub”的消息模式
    4. 高可靠性/扩展性

    源码安装

    redis官方兼容大部分POSIX系统,推荐的生产系统是linux,官方并不支持win,但微软提交了一个补丁,redis才可以在win下运行,因此win只适合于学习,下面是官网通过源码安装的命令

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

    安装完成后,redis-server、redis-cli运行文件,会出现在redis-5.0.5/src目录中

    启动redis

    $ src/redis-server
    
    # redis 服务器默认端口是6379,可以通过--port自定义端口号
    # 还可以指定配置文件:redis-server conf/redis.conf
    neo@neo:~/install/redis-5.0.5$ src/redis-server --port 6380
    # 对应的redis客户端访问时要加上自定义端口
    neo@neo:~/install/redis-5.0.5/src$ ./redis-cli -p 6380
    
    

    访问redis

    $ src/redis-cli
    redis> set foo bar
    OK
    redis> get foo
    "bar"
    
    # 如果已经进入src目录,./运行二进制文件
    neo@neo:~/install/redis-5.0.5/src$ redis-cli
    bash: redis-cli: 未找到命令
    neo@neo:~/install/redis-5.0.5/src$ /redis-cli
    bash: /redis-cli: 没有那个文件或目录
    neo@neo:~/install/redis-5.0.5/src$ ./redis-cli
    127.0.0.1:6379> ping
    PONG
    127.0.0.1:6379> ping hi
    "hi"
    127.0.0.1:6379> 
    

    停止redis

    强行停止redis进程可能导致数据丢失,更优雅的方式是向redis发生shutdown信号,以保持数据一致性

    当redis接收到shutdown信号,会先断开所有客户端连接,再根据配置保存数据,而后关闭

    redis可以妥善处理sigterm信号,所以kill redis进程的pid,效果和shutdown相同

    127.0.0.1:6379> shutdown save
    

    随机启动

    redis源码目录的utils文件夹中有一个脚本文件:redis_init_script,通过它可以随系统启动

    # 1.配置初始化脚本:将脚本复制到/etc/init.d目录中,重命名为redis_端口号;并将脚本REDISPORT变量值改为相同端口号
    sudo cp redis-5.0.5/utils/redis_init_script /etc/init.d/
    sudo mv /etc/init.d/redis_init_script /etc/init.d/redis_6379
    
    # 2.建立文件夹
    sudo mkdir /etc/redis #存放redis配置文件
    sudo mkdir /var/redis/6379 #存放redis持久化文件
    
    # 3.修改配置文件:将配置文件复制到/etc/redis目录中,并重命名为端口号;修改参数如下表格
    sudo cp redis-5.0.5/redis.conf /etc/redis/
    sudo mv /etc/redis/redis.conf /etc/redis/6379.conf
    
    # 4.执行随系统启动的命令
    sudo update-rc.d redis_6379 defaults
    

    redis脚本启中,配置文件需要修改的参数

    参数 说明
    daemonize yes redis是否以守护进程运行
    pidfile /var/run/redis_端口号.pid 设置redis的pid文件位置
    port 端口号 设置redis监听的端口号
    dir /var/redis/端口号 设置持久化文件存放位置

    填坑

    # 掐指一算,第4步会有下面的坑
    insserv: Script redis_6379 is broken: incomplete LSB comment.
    insserv: missing `Required-Start:' entry: please add even if empty.
    insserv: missing `Renequired-Stop:'  entry: please add even if empty.
    
    # 填坑对策:redis_6379初始化脚本,加入Required-Start、Required-Stop, 为啥注释里加上有作用呢??
    ### BEGIN INIT INFO
    # Provides:     redis_6379
    # Required-Start:    $local_fs $network
    # Required-Stop:     $local_fs
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Redis data structure server
    # Description:          Redis data structure server. See https://redis.io
    ### END INIT INFO
    

    redis启动脚本

    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    
    ### BEGIN INIT INFO
    # Provides:     redis_6379
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Redis data structure server
    # Description:          Redis data structure server. See https://redis.io
    ### END INIT INFO
    
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.conf"
    
    case "$1" in
        start)
            if [ -f $PIDFILE ]
            then
                    echo "$PIDFILE exists, process is already running or crashed"
            else
                    echo "Starting Redis server..."
                    $EXEC $CONF
            fi
            ;;
        stop)
            if [ ! -f $PIDFILE ]
            then
                    echo "$PIDFILE does not exist, process is not running"
            else
                    PID=$(cat $PIDFILE)
                    echo "Stopping ..."
                    $CLIEXEC -p $REDISPORT shutdown
                    while [ -x /proc/${PID} ]
                    do
                        echo "Waiting for Redis to shutdown ..."
                        sleep 1
                    done
                    echo "Redis stopped"
            fi
            ;;
        *)
            echo "Please use start or stop as first argument"
            ;;
    esac
    

    关于配置

    # redis-server的启动参数除了port,还有是否开启持久化、日志级别等,由于配置项众多,所以redis-server启动参数可以通过配置文件来传递(redis提供了配置文件模板,位于源代码目录的根目录中),如:
    $ redis-server 配置文件路径
    
    # 命令行参数可以覆盖同名的配置文件参数,如:
    $ redis-server 配置文件路径 --loglevel warning
    
    # redis还支持冬动态修改部分配置,即通过config set命令,在redis运行且不重启的情况下修改配置;
    # config get命令获取当前配置情况(通过config set配置的情况??)
    127.0.0.1:6379> config set loglevel warning
    OK
    127.0.0.1:6379> config get loglevel
    1) "loglevel"
    2) "warning"
    

    redis部分配置参数列表

    参数名 默认值 使用config set设置
    daemonize no 不可以
    pidfile /var/run/redis/pid 不可以
    port 6379 不可以
    databases 16 不可以
    save save 900 1<br /><br />save 300 10<br /><br />save 60 10000 可以
    rdbcompression yes 可以
    rdbchecksum yes 可以
    dbfilename dump.rdb 可以
    dir ./ 不可以
    slaveof 不可以
    masterauth 可以
    slave-serve-stale-data yes 可以
    slave-read-only yes 可以
    reqirepass 可以
    rename-command 不可以
    maxmemory 可以
    maxmemory-policy volatile-lru态修改部分配置,即通过config set命令,在 可以
    maxmemory-samples 3 可以
    appendonly no 可以
    appendfsync everysec 可以
    auto-aof-rewrite-percentage 100 可以
    auto-aof-rewrite-min-size 64mb 可以
    lua-time-limit 5000 可以
    slowlog-log-slower-than 10000 可以
    slowlog-max-len 128 可以
    hash-max-ziplist-entries 512 可以
    hash-max-ziplist-value 64 可以
    list-max-ziplist-entries 512 可以
    list-max-ziplist-value 64 可以
    set-max-intset-entries 512 可以
    zset-max-ziplist-entries 128 可以
    zset-max-ziplist-value 64 可以

    相关文章

      网友评论

          本文标题:redis第一章:简介和安装

          本文链接:https://www.haomeiwen.com/subject/kyfcxhtx.html