Redis

Table of Contents

1 Redis

REmote DIctionary Server(Redis)是一个C语言实现的开源key-value数据库。

官网:https://redis.io/
命令参考:https://redis.io/commands

1.1 Redis安装及简单使用

下载和编译过程:

$ curl -O http://download.redis.io/releases/redis-4.0.0.tar.gz
$ tar xzf redis-4.0.0.tar.gz
$ cd redis-4.0.10
$ make

上面命令成功完成后,会在src目录中生成下面这些可执行程序:

redis-server       # Redis服务器
redis-cli          # Redis命令行客户端
redis-benchmark    # Redis性能测试工具
redis-check-aof    # AOF文件检测工具
redis-check-rdb    # RDB文件检测工具
redis-sentinel     # Sentinel服务器,4.0开始和redis-server是同一文件,使用--sentinel指定为哨兵

启动Redis Server:

$ ./src/redis-server                   # 默认监听在本机的6379端口

使用内置的client,测试如下:

$ ./src/redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"

1.2 查看命令帮助

使用 help COMMAND 可以查看命令的在线帮助文档。如:

127.0.0.1:6379> help del

  DEL key [key ...]
  summary: Delete a key
  since: 1.0.0
  group: generic

使用 help @GROUP 可以查看一组命令的相关帮助文档。如:

127.0.0.1:6379> help @hash

  HDEL key field [field ...]
  summary: Delete one or more hash fields
  since: 2.0.0

  HEXISTS key field
  summary: Determine if a hash field exists
  since: 2.0.0

  HGET key field
  summary: Get the value of a hash field
  since: 2.0.0

......

下面一些GROUP名称:

generic         # 一般命令
string          # 字符串类型命令
list            # 列表类型命令
set             # 集合类型命令
sorted_set      # 有序集合命令
hash            # hash操作命令
pubsub          # 发布命令
transactions    # 事务操作命令
connection      # 连接相关命令
server          # 服务器相关命令
scripting       # 脚本相关命令
hyperloglog     # hyperloglog类型命令
cluster         # 集群相关命令
geo             # 经纬度相关命令

1.3 Redis应用场景

Redis应用场景很广泛,如缓存、分布式集群中的session共享、统计排行榜(使用zadd命令)、网站点击量统计等等。

1.4 Redis VS. Memcached

相比于Memcached,Redis主要有下面优点:

  • 提供了丰富的数据类型;
  • 可以持久化内存数据到磁盘,提供了AOF和RDB两种持久化机制。

2 Redis数据类型

Redis支持的主要数据类型有:string、list、hash、set、sorted_set等等。

参考:An introduction to Redis data types and abstractions

3 Redis配置

启动Redis Server时,可直接指定配置文件(一般名为redis.conf)。如:

$ redis-server redis.conf

通过 config get * 可以查看所有配置,也可以指定某一个配置进行查询。如:

$ redis-cli
127.0.0.1:6379> config get *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
......
165) "notify-keyspace-events"
166) ""
167) "bind"
168) ""
127.0.0.1:6379> config get dbfilename
1) "dbfilename"
2) "dump.rdb"

输出中,前一行配置名称,后面的紧接一行是配置的当前值。

通过 CONFIG SET parameter value 可以修改某个配置。如:

127.0.0.1:6379> config set dbfilename db.rdb
OK

Author: cig01

Created: <2018-04-14 Sat 00:00>

Last updated: <2018-07-25 Wed 21:34>

Creator: Emacs 25.3.1 (Org mode 9.1.4)