0%
Theme NexT works best with JavaScript enabled
Redis
简介
Redis
是完全开源免费的,遵守BSD
协议,是一个高性能的key-value
数据库
Redis
与其他key - value
缓存产品有以下三个特点:
Redis
支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
Redis
不仅仅支持简单的key-value
类型的数据,同时还提供list
,set
,zset
,hash
等数据结构的存储。
Redis
支持数据的备份,即master-slave
模式的数据备份
Redis
的优势
性能极高 –Redis
能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis
支持二进制案例的Strings
, Lists
, Hashes
, Sets
及 Ordered Sets
数据类型操作。
原子 – Redis
的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
丰富的特性 – Redis
还支持publish/subscribe
, 通知, key
过期等等特性
Redis
与其他key-value
存储有什么不同?
Redis
有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径
Redis
的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象
Redis
运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存
在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis
可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问
Redis
的安装
至于安装, 我这里就不在班门弄斧了, 这里给大家推荐一篇博客: mac系统安装redis
文章写得非常详细, 建议参考安装
Redis
命令操作
Redis
命令十分丰富,包括的命令组有Cluster
、Connection
、Geo
、Hashes
、HyperLogLog
、Keys
、Lists
、Pub/Sub
、Scripting
、Server
、Sets
、Sorted Sets
、Strings
、Transactions
一共14个redis
命令组两百多个redis
命令
Redis中文命令大全 , 可以通过检索功能快速查找命令
查看网站结构图 ,它以节点图的形式展示了所有redis命令
String
String
是redis
最基本的类型,最大能存储512MB的数据
String
类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
设置值 1 2 3 4 5 6 7 8 9 set key value set titan titan setex key seconds value setex c 10 good mset key value [key value ……] mset d good e nice f bad
获取值 1 2 3 4 5 6 get key get d mget key [key ……] mget d f a
运算命令 前提条件是:值是字符串类型的数字
1 2 3 4 5 6 7 8 9 10 11 12 incr key incr g decr key decr h incrby key intnum incrby g 12 decrby key intnum decrby g 11
其他常用命令 1 2 3 4 5 6 append key value append d lucky strlen key strlen d
Keys 1 2 3 4 5 6 7 8 9 10 11 12 keys pattern exists key type key del key [key ……] expire key seconds ttl key
Hashes
hash
是一个string
类型的field
和value
的映射表,hash
特别适合用于存储对象
Redis
中每个hash
可以存储 232 - 1 键值对(40多亿)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 hset key field value hset a1 field a1 hmset key field value [field value ……] hmset a3 field1 a3 field2 a4 hget key field hget a3 field1 hmget key filed [filed ……] hmget a3 field1 field2 hgetall key hgetall a3 hkeys key hkeys a3 hvals key hvals a3 hlen key hlen a3 hexists key field hexists a3 field3 hexists a3 field1 hdel key field [field ……] hdel a2 field hstrlen key field hstrlen a3 field1
列表(List)
Redis
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 lpush key value [vlaue ……] lpush list 1 2 3 4 rpush key value [vlaue ……] rpush list 9 8 7 6 linsert key before|after pivot value linsert list before 4 10 linsert list after 3 5 lset key index value lset list 3 11 lset list -2 21 lpop key lpop list rpop key lpop list lrange key start end lrange list 2 4 ltrim key start end ltrim list 0 2 llen key llen list lindex key index lindex list 2
集合(Set)
Redis
的Set
是String
类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
`Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 sadd key member [member ……] sadd set1 1 2 3 4 5 3 2 sadd set2 4 5 6 7 8 smembers key smembers set1 scard key scard set1 sinter key [key ……] sinter set1 set2 sdiff key [key ……] sdiff set1 set2 sdiff set2 set1 sunion key [key ……] sunion set1 set2 sismember key member sismember set1 4 sismember set1 7
有序集合(sorted set)
有序集合,元素类型为Sting
,元素具有唯一性,不能重复
每个元素都会关联一个double
类型的score
(表示权重),通过权重的大小排序,元素的score
可以相同
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 zadd key score member [score member ……] zadd slist 1 a 5 b 3 c 2 d 4 e zrange key start end zrange slist 0 2 zcard key zcard slist zcount key min max zcount slist 1 3 zscore key member zscore slist e