Redis:常用命令

来自Wikioe
Eijux讨论 | 贡献2021年5月9日 (日) 20:36的版本 →‎关于 NoSQL
跳到导航 跳到搜索


关于

Remote Dictionary Server(Redis)是一个开源的由 Salvatore Sanfilippo 使用 ANSI C 语言编写的'''key-value'''数据存储服务器。其值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,所以它通常也被称为数据结构服务器。

Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。


  • 因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的 Key-Value DB。
  • Redis的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外【单个 value 的最大限制是 1 GB】,不像 memcached 只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。
    比方说用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高性能的 tag 系统等等。【???】
  • 另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当作一个功能加强版的 memcached 来用。


Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。

特点

redis 的特点:

  1. redis 足够简单和稳定
  2. 支持丰富的数据结构
  3. 内存存储读写性能优秀
  4. 提供持久化的支持
  5. 支持部分事务操作

关于 NoSQL

redis 属于NoSQL数据库,NoSQL 数据库叫非关系型数据库,(NoSQL = Not Only SQL),意即“不仅仅是SQL”。


按存储方式不同,数据库可以分为以下类型:

  • key-value 存储:“Berkeley DB”、“MemcacheDB”、“Redis”;【Memcache不能持久化???】
  • 文档存储:“MongoDB”、“CouchDB”;
  • 列存储:“Hbase”、“Cassandra”;

基础命令

redis手册:


基础命令:

  1. 验证安装:(redis-cli等链接后)输入“ping”(redis返回“PONG”表示服务运行正常);
  2. 切换库命令:“select <db>”;
  3. 删除所有库的数据:“flushall”;
  4. 删除当前库的数据:“flushdb”;
  5. 获得 redis 的所有配置值:“config get *”;
  6. redis-cli 退出当前 redis 连接:“exit”或“quit”;
  7. 查看当前数据库中key的数目:“dbsize”;
  8. 查看 redis 服务器的统计信息:“info”;


NOTE:

  • redis.conf”是 Redis 的配置文件;
  • redis 默认为 16 个库(默认自动使用 0 号库);

安全

以下都是在配置文件“redis.conf”中进行修改。

设置密码

配置文件中:

requirepass 123456


客户端连接则需要密码:“AUTH 123456”或者“redis-cli -h 127.0.0.1 -p 6379 -a 123456”;

  • 因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。

绑定ip

配置文件中:

# bind 127.0.0.1
  1. 取消 ip 绑定注释(去掉 #),
  2. 修改“127.0.0.1”为允许访问 redis 服务器的ip地址:

禁用命令、重命名命令

配置文件中:

rename-command FLUSHALL oyfekmjvmwxq5a9c8usofuo369x0it2k        # 重命名FLUSHALL命令
rename-command FLUSHALL ""                                      # 禁用FLUSHALL命令
rename-command FLUSHDB ""                                       # 禁止FLUSHDB命令
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52  # 重命名CONFIG命令
rename-command CONFIG ""                                        # 禁止CONFIG命令
  • 对于禁用“FLUSHALL”命令,需要保证“appendonly.aof”文件没有 flushall 命令,否则服务器无法启动;

修改默认端口

配置文件中:

port 6379
  • 修改 redis 的端口,这一点很重要,使用默认的端口很危险;