配置(/etc/redis.conf)

1
requirepass foobared # 设置密码

命令

  • 启动redis

    redis-server /etc/redis.conf
    
  • 根据pattern删除key

    redis-cli KEYS "prefix:*" | xargs redis-cli DEL
    

命令返回值

1
2
3
4
5
6
7
8
typedef struct redisReply {
int type; /* REDIS_REPLY_* */
long long integer; /* The integer when type is REDIS_REPLY_INTEGER */
int len; /* Length of string */
char *str; /* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */
size_t elements; /* number of elements, for REDIS_REPLY_ARRAY */
struct redisReply **element; /* elements vector for REDIS_REPLY_ARRAY */
} redisReply;
  • 状态(#define REDIS_REPLY_STATUS 5), str=> value

    • SET => “OK”

    • PING => “PONG”

  • 错误(#define REDIS_REPLY_ERROR 6), str => value

  • 整数(#define REDIS_REPLY_INTEGER 3), integer => value

    一些整数操作命令,如INCR返回增加后的键值

  • 字符串(#define REDIS_REPLY_STRING 1), str => value

    当请求一个字符串类型键的键值时,若每个键不存在,则返回特殊值nil(#define REDIS_REPLY_NIL 4)

  • 字符串数组(#define REDIS_REPLY_ARRAY 2), str => value, element => next

备份与恢复

  • SAVE

    同步保存数据到磁盘文件中

    dbfilename dump.rdb
    dir /var/lib/redis/
    
  • BGSAVE

    异步保存

  • CONFIG get dir

    恢复数据(dir由/etc/redis.conf中定义)

Server端处理客户端socket

Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:

  1. 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。
  2. 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法
  3. 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送

留言

2016-04-05