发布时间2019-06-25 00:09:54
15
0
0

redis 是一个基于内存的高性能 key-value 数据库,整个数据库加载在内存中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。

优点

  • 速度快,数据保存在 内存,类似于 HashMap ,Hash Map 的优势就是 查找和操作的 时间复杂度都是 O(1).
  • 数据类型丰富。string,list,set,sorted set, hash
  • 支持事物。操作是原子性,就是对数据的更改要么全部执行要么全部不执行
  • 丰富的特性。可用于缓存,消息,按 key 设置过期时间,过期后将会自动删除。

缺点

主要缺点就是: 数据库容易受物理内存的限制,不能作海量数据的高性能读写,因此 redis 适合的场景主要局限在较小数量的高性能操作和运算。

应用场景

会话缓存( Session Cache )

全页缓存( FPC )

队列

Redis 在内存存储引擎领域的一大有点就是 list 和 set 操作,使得 redis 作为一个很好的消息队列平台。

排行榜 & 计数器

发布 & 订阅

Redis 数据类型

redis 一共支持 物种数据类型:string(字符串),hash(哈希),list(列表),set(集合),和 zset(sorted set 有序集合)

字符串

一个键名对应一个键值,键值对,最大存储 512 MB

> set key "zhangsan" //ok
> get key //"zhangsan"
> getset key "lisi" //"zhangsan" //将给定的值赋为 value,并返回 key 的旧值
> mset key1 "zhangsan" key2 "lisi" key3 "wangwu" //ok

hash(哈希)

哈希是一个键值对的集合,是一个 string 类型的field 和 value 的映射表适用于存储对象

> hset redishash 1 "001" //ok
> hset userinfo 1 "{'id':1,'name':'zhangsan'}" //ok
> hmset userinfo 2 "{2}" 3 "{3}" //ok
> hmget userinfo 1 2 //返回指定多个

list(表)

redis 的简单的字符串列表按照插入顺序排列

> lpush goodlist 1 //1
> lpush goodlist 5 //2
> rpush goodlist 7 //3 但是是从右插入的,获取时将会排在第一次出入的后面。最后面
> lrange goodlist 0 2 //5 1 7
> llen goodlist //3

set(集合)

字符串的无序集合,但是 不可重复

> sadd redis redisset //1
> sadd redis redisset2 //1
> sadd redis redisset3 //1
> smembers redis //全部列出来,顺序随机
> sadd redis redisset2 //0
> srem redis redisset //1 删除一个元素

zset(sorted set 有序集合)

string 类型的有序集合,也不可重复。有序集合中的每个元素都要指定一个分数,根据分数对元素进行升序排列,如果多个元素有相同的分数,则以字典序进行升序排列。

> zadd hotarticle 1 001 //1 //参数1 表示添加的分数,用来排序,001 表示 hotarticle 文章ID
> zadd hotarticle 2 002 //1
> zadd hotarticle 100 003 //1
> zcount hotarticle 0 10 //2 //返回在区域 0~10 之间的数据count
> zrem hotarticle 002 //1 //删除一个元素
> zscore hotarticle 003 //100 //查询某个元素的分值
> zrangebyscore hotarticle 0 10 //排序列出所有区间内的值

redis 相关命令

> select 1 //ok //选择某一个数据库,0-15
> info //列出 redis 的配置数据
> config get 0 //?????

发布 & 订阅