高性能的缓存数据库,能够在高并发场景下应用提供高效的数据访问能力,因而在各类互联网应用中被广泛运用。
目前的互联网应用广泛使用两种方式来进行数据存储,关系型数据库和 NoSQL 数据库。
- 关系型数据库是指采用关系模型来组织数据的数据库,主要用于存储格式化的数据结构,大量传统数据库库如:MySQL、Oracle……
- NoSQL 数据库泛指非关系型数据库,主要服务于特定背景的专用数据库,对外提供的是特定的 API,而非通用的 SQL 接口。数据访问更加高效。
Redis 是一个开源的 key-value 数据库,属于 NoSQL 数据库, 按照键值对的结构对数据进行存储。
数据都是缓存在内存中,并基于内存操作,故性能较高。支持的存储的 value 类型更多,包括 string、list、set、zset 和 hash。
Redis 会周期性地把更新的数据写入磁盘或把修改操作写入追击的记录文件,并且在此基础上实现了主从同步,数据可以由主服务器同步到任意数量的从服务器上。Redis 支持主从,保证了数据服务的高性能和高可用。
Redis 常用的命令
语法 :auth password
语法 :set key value [ex seconds | px millseconds] [nx|xx]
参数介绍如下:
- ex seconds:设置指定的过期时间 seconds,seconds 是以秒为单位的数字。
- px millseconds:设置指定的过期时间 millseconds,millseconds 是以毫秒为单位的数字。
- nx:仅在 key 不存在时设置该 key。
- xx:仅在 key 已存在时设置该 key。
注意
如果 key 已经保存了一个值,则 set 命令执行成功时,无论其类型如何,都会被覆盖。
语法:get key
语法:exists key1 [key2……]
仅指定一个 key 时,如果 key 存在则返回 1, 不存在则返回 0。当指定多个 key 时,它返回存在的 key 的总数。
语法:keys pattern
支持的常用模式如下:
- h?llo:匹配单个字符,如 hello、hallo、hxllo等;
- h*llo:匹配任意字符,如 hllo、heeeello等;
- h[ae]llo:包含一个指定字符:如 hello 或 hallo;
- h[^ae]llo:包含除指定字符外的一个字符,如 hbllo、hcllo等,但不包含 hallo 和 hello;
- h[a-c]llo:匹配指定范围内的一个字符,如 hallo、hbllo 和 hcllo;
如需匹配以上模式中的特殊字符,则需使用 \ 转义,如要匹配 * 字符,应使用 \*;
语法:del key1 [key2……]
语法:rename key newkey
语法:expire key timeout
注意
- 如果设置一个非正的 timeout 参数,将导致 key 被删除。
- 对已经设置了超时时间的 key 调用 expire 命令,该 key 的超时时间将更新为新值。
- 删除 key 或覆盖 key 的内容会清除该 key 的超时设置,如 del、set 操作。
- 如果已使用 rename 命令重命名 key,则相关的剩余生存时间将转移到新 key。
-
ttl 命令
-
以秒为单位返回 key 的剩余生存时间。如果 key 未设置超时时间则返回 -1,如果key不存在则返回 -2。而对于 Redis 2.6 及以下版本,当未设置超时时间和 key 不存在时均返回 -1。
语法:ttl key
语法:persist key
语法:select dbid
语法:flushadb
语法:flushall
语法:quit
通过 msi 格式的安装版可以将 Redis 直接安装成 Windows 服务,并可通过 redis.windows-service.conf 文件配置其他参数,而解压缩版的 Redis 则需要通过命令将 redis-server.exe 注册为服务。
命令如下:
redis-server --service-install redis.windows.conf --loglevel verbose