程序员

redis介绍

2019-01-02  本文已影响0人  进步源于积累

五种数据类型

String:命令-set\get\del\

list:命令-rpush\lrange\lindex\lpop

set:命令-sadd\smembers\smember\srem

hash:命令-hset\hgetall\hdel\hget

zset:命令-zadd\zrange\zrangebyscore\zrem

适合场景

1.计数器 String可进行自增减。Redisp这种内存数据库读写性能非常高

2.缓存 热点数据放到内存中

3.查找表 查找快的特性。

4.消息队列 list双向链表,通过 lpop lpush写入读取。可以做,但是还是推荐用消息中间件

5.会话缓存 redis存多台应用服务器的会话信息

6.分布式锁 在分布式场景下,无法使用单机锁对多个结点上的进程进行同步。可以用setnx命令实现分布式锁

7.ZSet可以实现有序性操作,从而实现排行榜等功能

优势

1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

2.支持丰富数据类型,支持string,list,set,sorted set,hash

3.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

4.丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

和memcached相比

数据类型:m只支持字符串,r支持五种了

数据持久化:r两种持久策略Rdb aof,m不支持

分布式:m不支持

内存管理机制:r很久没用的会放到磁盘。m一直在内存。Memcached 将内存分割成特定长度的块来存储数据,以完全解决内存碎片的问题。但是这种方式会使得内存的利用率不高,例如块的大小为 128 bytes,只存储 100 bytes 的数据,那么剩下的 28 bytes 就浪费掉了。

回收策略

volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择 数据淘汰

allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

no-enviction(驱逐):禁止驱逐数据

上一篇下一篇

猜你喜欢

热点阅读