Redis全称为REmote DIctionary Server,是一个key-value存储系统。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
1.Redis的优点
(1)性能极高
Redis能读的速度是110000次/s,写的速度是81000次/s 。
(2)丰富的数据类型
Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
(3)原子
Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
(4)丰富的特性
Redis还支持 publish/subscribe, 通知, key 过期等等特性。
2.Redis 数据类型
(1)String(字符串)
使用set key xx来设置key的值,get key来得到key的值
(2)Hash(哈希)
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
设置key的值
hmset key的值 field1 xx1 field2 xx2
得到key的值
hget key的值 field1
(3) List(列表)
设置key的值
使用lpush key的值 xx
得到key的值
lrange key的值 开始的index 结束的index
(4) Set(集合)
Redis 的 Set 是 string 类型的无序集合
设置key的值
sadd key的值 xx
得到key的值
smembers key的值
(5)zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
设置key的值
zadd key的值 0 xxx
得到key的值
zrangebyscore key的值 开始的index 结束的index
3. Redis命令
Redis字符串命令
(1)连接本地redis服务
redis-cli
(2)检测redis服务是否启动
ping
(3)连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上
redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
(4)删除键值
DEL runoobkey
(5)序列化给定 key ,并返回被序列化的值
DUMP KEY_NAME
(6)检查给定 key 是否存在
EXISTS KEY_NAME
(7)给key设置过期时间
EXPIRE mykey 60
mykey 设置了过期时间为 1 分钟,1分钟后该键会自动删除。
EXPIREAT mykey 1293840000
以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用
(8)获取 redis 中所有的 key
KEYS *
(9)将 key 移动到数据库 1
MOVE key 1
(10)返回 key 所储存的值的类型
(11)获取指定 key 所储存的字符串值的长度
(12)同时设置一个或多个 key-value 对
MSET key1 "Hello" key2 "World"
Redis 哈希(Hash)命令
(1)删除哈希表 key 中的一个或多个指定字段
HDEL myhash field1
(2)查看哈希表的指定字段是否存在
HEXISTS myhash field1
(3)返回哈希表中指定字段的值
HGET site redis
(4)返回哈希表中,所有的字段和值
HGETALL myhash
(5)获取哈希表中的所有域(field)
HKEYS key
(6)获取哈希表中字段的数量
HLEN myhash
Redis 列表(List)命令
(1)通过索引获取列表中的元素
可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素
LINDEX mylist 0
(2)返回列表的长度
LLEN list1
(3)Lpush 命令将一个或多个值插入到列表头部
LPUSH list1 "foo"
(4)Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)
RPUSH mylist "foo"
Redis 集合(Set)命令
(1)Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略
SADD myset "hello"
(2)Scard 命令返回集合中元素的数量
SCARD myset
(3)Smembers 命令返回集合中的所有的成员,不存在的集合 key 被视为空集合
SMEMBERS myset1
(4)Smove 命令将指定成员 member 元素从 source 集合移动到 destination 集合
SMOVE myset1 myset2 "bar"
Redis 有序集合(sorted set)
(1)Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中
ZADD myzset 1 "one"
(2)Zcard 命令用于计算集合中元素的数量
ZCARD myzset
(3)Zscore 命令返回有序集中,成员的分数值,如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil
ZSCORE salary peter
4.Redis 事务
事务从开始到执行会经历以下三个阶段:开始事务、命令入队、执行事务
先以 MULTI 开始一个事务,然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务
事务命令:
(1)Discard 命令用于取消事务,放弃执行事务块内的所有命令
(2)Watch 命令用于监视一个(或多个) key
(3)Unwatch 命令用于取消 WATCH 命令对所有 key 的监视
5. Redis 连接
(1)Auth 命令用于检测给定的密码和配置文件中的密码是否相符
(2)Echo 命令用于打印给定的字符串
(3)Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG
(4)Quit 命令用于关闭与当前客户端与redis服务的连接
(5)Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值
6. Redis 服务器
(1) Client Slots 命令用于当前的集群状态,以数组形式展示
(2) Time 命令用于返回当前服务器时间
(3) Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )
(4) Flushdb 命令用于清空当前数据库中的所有 key
7. Redis 数据备份与恢复
(1) SAVE 命令用于创建当前数据库的备份
(2)如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可,获取 redis 目录可以使用 CONFIG 命令,如下所示:
网友评论