Redis简介
Redis是开源、高性能的key-value数据库,属于NoSQL数据库 NoSQL数据库与关系型数据库 关系型数据库:采用关系模型来组织数据,主要用于存储格式化的数据结构 NoSQL数据库:泛指非关系型数据库,向外提供特定的API而不是通用的SQL接口,数据访问更加高效 Redis的特点 不仅支持简单的string类型数据,同时还提供list、set、zset、hash等数据结构的存储 支持数据持久化,可以将内存中的数据保存在磁盘中 支持master-slave模式的数据备份。
Linux版Redis安装
(1) 安装redis数据库 (使用root用户) apt-get install redis-server
(2) 修改redis的配置 vi /etc/redis/redis.conf
按i键进入编辑模式 将文件中的bind这行代码注释掉(前面加#) #bind 127.0.0.1
设置Redis监听端口 port 6379
修改密码 requirepass “123456” 设置Redis是否作为守护进程运行 daemonize yes
设置Redis数据库数量,默认是16 databases 16 数据文件保存的位置 dir /data/redisdata/
按ESC退出编辑模式
按:wq
(3) 重启redis-server服务 service redis-server restart
修改防火墙设置
ubuntu 开放6379端口(root用户)
su root
apt-get install iptables
添加规则
iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
保存规则
iptables-save
持久化安装
apt-get install iptables-persistent
netfilter-persistent save
netfilter-persistent reload
执行Redis安装目录下bin目录中的redis-cli命令
redis-cli [选项]
-h <hostname> | 服务器主机地址127.0.0.1 |
-p <port> | 服务器端口默认6379 |
-a <password> | Redis服务访问密码 |
-n <dbid> | 所要连接的数据库默认为0 |
实例
### 连接到本地Redis服务中dbid为0数据库
redis-cli -h 127.0.0.1 -p 6379
auth 请求进行身份验证
如果password与配置文件中的密码匹配,则返回OK状态代码并开始接受命令。否则返回错误 quit 要求服务器关闭连接 exit也可以
例子auth password
Redis常用键值命令
set 设置key以保存value(string类型)
set正确执行,返回字符串OK。未执行set操作,则返回空回复nil
参数
语法:
set key value [ex seconds | px milliseconds] [nx | xx]
ex:设置指定的过期时间seconds,以秒为单位
px:设置指定的过期时间milliseconds,以毫秒为单位
nx:仅在key不存在时设置该key(只创建、不覆盖)
xx:仅在key已存在时设置该key(只覆盖、不创建)
get
获取key对应value
如果key不存在,则返回特殊值nil。
如果存储在key中的值不是字符串,则返回错误,因为get仅处理字符串值
语法:
get key
Redis 常用操作Key操作
exists
判断指定的key是否存在,从Redis 3.0.3开始,可以指定多个key
仅指定一个key时,key存在返回1,不存在返回0。指定多个key时,返回存在的key的总数
语法:exists key1 [key2 ...]
keys
返回和pattern(模式)匹配的所有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 删除指定的key
返回已删除的key的数量。如果key不存在则忽略该key
语法:del key1 [key2 ...]
rename 将key重命名为newkey,如果newkey已经存在则会被覆盖(此时rename执行隐式del操作)
若key不存在返回错误
语法:rename key newkey
Redis常用命令生命周期操作
expire
在key上设置超时时间timeout,时间以秒为单位
设置成功返回1,key不存在返回0
语法:expire key timeout
ttl
以秒为单位返回key的剩余生存时间 Redis 2.8及以上版本,key未设置超时时间返回-1,key不存在返回-2。Redis 2.6及以下版本,未设置超时时间和key不存在均返回-1
语法:ttl key
persist
删除key上现有的超时设置,使key变为永久有效
超时设置被删除,返回1;key不存在或没有关联的超时设置,返回0
语法:persist key
Redis常用命令数据库操作
select
选择具有指定dbid的Redis逻辑数据库
语法:select dbid
flushdb
删除当前所选数据库中的所有key
flushall 删除所有现有数据库中的所有key,而不仅仅是当前选定的数据库