一、Redis的特点及优势
Redis是一个开源的使用C语言编写、开源、支持网络、可基于内存也可以持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API。
Redis通常被称为数据结构服务器,因为值(value)可以是 字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
Redis 与其他 key-value缓存产品有以下三个特点:
1.Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用。
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
3.Redis支持数据的备份,即master-slave主从模式的数据备份
Redis的优势:
1.性能极高:Redis读的速度是110000次/s,写的速度是81000次/s
2.丰富的数据类型:Redis支持二进制案例的Strings、Lists、Hashs、Sets、Zsets数据类型操作。
3.操作原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
4.丰富的特性:发布订阅模式、key自动过期
二、Redis安装、启动、退出、设置密码、远程连接
1、安装Redis
下载Redis安装包(如:redis-2.8.17.tar.gz)
tar -zxvf redis-2.8.17.tar.gz cd redis-2.8.17 make sudo make install
2、后台启动服务端
nohup redis-server &
注意:redis-server 默认启动端口是6397,没有密码
如果不使用默认配置文件,启动时可以加上配置文件
nohup redis-server ~/soft/redis-2.8.17/redis.conf &
3、启动客户端、验证
127.0.0.1:6379> ping PONG 127.0.0.1:6379> set var "hello world" OK 127.0.0.1:6379> get var "hello world"
4、退出
关闭redis-server
redis-cli shutdown
例子
$ps -ef | grep redis root 23422 19813 0 10:59 pts/5 00:00:08 redis-server *:6379 $sudo redis-cli shutdown [23422] 05 Mar 12:11:29.301 # User requested shutdown... [23422] 05 Mar 12:11:29.301 * Saving the final RDB snapshot before exiting. [23422] 05 Mar 12:11:29.314 * DB saved on disk [23422] 05 Mar 12:11:29.314 # Redis is now ready to exit, bye bye... [1]+ Done sudo redis-server (wd: ~/soft/redis-2.10.3) (wd now: ~/soft/redis-2.8.17) $ps -ef | grep redis myredis 30563 19813 0 12:11 pts/5 00:00:00 grep redis
注意:如果设置上密码后,单纯的redis-cli是关不掉的,必须加上ip、port、password
sudo redis-cli -h host -p port -a passwd shutdown
退出客户端
localhost:6379> QUIT
5、设立密码
打开redis.conf找到requirepass,去掉默认,修改
requirepass yourpassword
验证密码正确性
localhost:6379> auth myredis OK
6、远程连接
需要已经安装redis, 可以使用redis-cli命令
redis-cli -h host -p port -a password
7、查看redis-server统计信息
INFO
三、Redis key
Redis是key-value的数据库,Redis的键用于管理Redis的键,基本语法是
COMMAND KEY_NAME
例子
localhost:6379> SET var redis OK localhost:6379> GET var "redis" localhost:6379> DEL var (integer) 1 localhost:6379> GET var (nil)
注意:redis命令不区分大小写,所以get var和GET var是等价的
DEl key | 该命令用于在 key 存在时删除key |
DUMP key | 序列化给定的 key,并返回被序列化的值 |
EXISTS key | 检查给定 key 是否存在 |
EXPIRE key seconds | 为 key 设置过期时间 |
EXPIREAT key timestamp | EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
PEXPIRE key milliseconds | 设置 key 的过期时间亿以毫秒计。 |
PEXPIREAT key milliseconds-timestamp | 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 |
KEYS pattern | 查找所有符合给定模式( pattern)的 key 。例如keys * 返回所有的key |
MOVE key db | 将当前数据库的 key 移动到给定的数据库 db 当中。 |
PERSIST key | 移除 key 的过期时间,key 将持久保持。 |
PTTL key | 以毫秒为单位返回 key 的剩余的过期时间。 |
TTL key | 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
RANDOMKEY | 从当前数据库中随机返回一个 key 。 |
RENAME key newkey | 修改 key 的名称 |
RENAMENX key newkey | 仅当 newkey 不存在时,将 key 改名为 newkey 。 |
TYPE key | 返回 key 所储存的值的类型。 |