是key-value存储系统,跨平台的非关系型数据库,C语言编写。可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API,Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。且还有很多其他特性比如:publish/subscribe,通知, key 过期,事务,Redis GEO等等。同类的产品还有memcache 、memcached。
数据类型:string(字符串)
描述:string是redis最基本的类型,string类型是二进制安全的
SET key value :设置指定 key 的值
GET key:获取指定 key 的值。
SETEX key seconds value:将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
INCR key:将 key 中储存的数字值增一。
INCRBY key increment:将 key 所储存的值加上给定的增量值(increment) 。
DECR key:将 key 中储存的数字值减一。
数据类型:hash
描述:Redis hash是一个键值(key=>value)对集合,string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
HDEL key field1 [field2]:删除一个或多个哈希表字段
HEXISTS key field:查看哈希表 key 中,指定的字段是否存在。
HGET key field:获取存储在哈希表中指定字段的值。
HINCRBY key field increment:为哈希表 key 中的指定字段的整数值加上增量 increment 。
数据类型:List(列表)
描述:Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。其他位置的元素也通过索引来GET或者SET值。不能通过索引来删指定位置的值,但是可以删具体的值。注意:List不是ArrayList而是LinkList
LINDEX key index:通过索引获取列表中的元素
LINSERT key BEFORE|AFTER pivot value:在列表的元素前或者后插入元素
数据类型:Set(集合)
Redis 的 Set 是 string 类型的无序集合,集合内元素的唯一。
SINTER key1 [key2]:返回给定所有集合的交集
SUNION key1 [key2]:返回所有给定集合的并集
SISMEMBER key member:判断 member 元素是否是集合 key 的成员
数据类型:zset(sorted set 有序集合)
描述:Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
ZCOUNT key min max:计算在有序集合中指定区间分数的成员数
ZREVRANGEBYSCORE key max min [WITHSCORES]:返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANGE key start stop [WITHSCORES]:返回有序集中指定区间内的成员,通过索引,分数从高到低
Redis HyperLogLog
描述:Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以HyperLogLog 不能像集合那样,返回输入的各个元素。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5,也就是不重复的元素个数。 基数估计就是在误差可接受的范围内,快速计算基数
PFCOUNT key [key ...]:返回给定 HyperLogLog 的基数估算值。
Redis 发布订阅
描述:Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
PSUBSCRIBE pattern [pattern ...]:订阅一个或多个符合给定模式的频道。Redis 客户端可以订阅任意数量的频道
PUBLISH channel message:将信息发送到指定的频道。
Redis 事务
描述:Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:单个 Redis命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
Redis GEO
描述:Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作
Redis Stream
描述:Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。简单来说发布订阅(pub/sub) 可以分发消息,但无法记录历史消息。而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。
其他命令:
EXPIRE key seconds:为给定 key 设置过期时间,以秒计。
PTTL key:以毫秒为单位返回 key 的剩余的过期时间。
RENAME key newkey:修改 key 的名称
TYPE key:返回 key 所储存的值的类型。