Redis 第三天
架构师要做技术选型,不能破坏技术的特征,比如Redis的一致性是最终一致性,如果在其他维度需要强一致性,那么就不是适合使用Redis了
Redis的速度:1.5M 每秒,每秒15W笔操作,换算成K是150000K
Redis简介
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)
在Redis中,一般说的数据结构是针对value的,只有value才有类型的区分
在Redis之前,还有一个也是基于K-V的缓存数据库memcached,但是与Redis不同的是,memcached中的value没有类型这个概念。当发现两者的不同时,思考一下当没有Redis时,只有memcached时,如果表示一个复杂的数据结构?没错,就是JSON,世界上只有三种数据表示方式:
k=a
k=1
k=[1,2,3]
k={x=y}
k={{a=b},{c=d}}
根据上面的描述,其实memcached也完全是OK的,那么为什么需要去学习Redis?
为什么选择Redis而不是memcached
场景:此时我们需要从缓存中通过key获取value中的某个元素,他们都是怎么做的?