设为首页 加入收藏

TOP

Redis数据类型与常用操作详解
2018-12-24 00:08:45 】 浏览:72
Tags:Redis 数据 类型 常用 操作 详解

redis适合放一些频繁使用,比较热的数据,因为是放在内存中,读写速度都非常快,一般会应用在下面一些场景,排行榜、计数器、消息队列推送、好友关注、粉丝。


首先要知道mysql存储在磁盘里,redis存储在内存里,redis既可以用来做持久存储,也可以做缓存,而目前大多数公司的存储都是mysql + redis,mysql作为主存储,redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能。


官方定义:


Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. 


(1)存储介质:Redis存储在内存,但是可以将数据持久化到硬盘。MySQL/Oracle将数据持久化的存储到硬盘;


(2)数据库类型:Redis属于非关系型数据库;MySQL/Oracle关系型数据库


(3)存取效率:Redis直接在内存中存取数据效率高;MySQL/Oracle每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;第二:反复的访问数据库也会导致数据库的负载过高。


Redis支持五种数据类型:字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(s

orted sets)


字符串(String): 增删改查 


哈希(Hash):  key {filed1: value, filed2:vaule.....,fieldN:value}



 



  列表(list) 



集合(sets) (集合内不允许相同的元素)



 


 (有序集合) 参考sets


常用操作


为什么数据持久化?


由于redis的强大性能很大程度上是因为所有数据都是存储在内存中,然而当出现服务器宕机、redis重启等特殊场景,所有存储在内存中的数据将会丢失,这是无法容忍的事情,所以必须将内存数据持久化。例如:将redis作为数据库使用的;将redis作为缓存服务器使用等场景。


持久化存在的方式?


目前持久化存在两种方式:RDB方式和AOF方式。


RDB方式


RDB持久化是把当前进程数据生成快照保存到硬盘的过程, 触发RDB持久化过程分为手动触发和自动触发。一般存在以下情况会对数据进行快照


优缺点:恢复数据较AOF更快;


RDB方式数据没办法做到实时持久化/秒级持久化;存在老版本Redis服务无法兼容新版RDB格式的问题;非实时性。


AOF方式


以独立日志的方式记录每次写命令(写入的内容直接是文本协议格式 ,重启时再重新执行AOF文件中的命令达到恢复数据的目的。


AOF的工作流程操作: 命令写入(append) 、 文件同步(sync) 、 文件重写(rewrite) 、 重启加载(load)


优点:实时性较好


 


四、redis过期时间


为什么需要设置过期时间?


涉及的业务场景 有数据更新要求(每秒/每天,根据业务的不同,更新频率也不同)


行情数据,则每秒需要更新; 账户资产等数据 ,则满足每天更新即可;


测试案例分析: 


经过计算1byte=8bit, 每个客户进行一次查询存储的key占用的内存400w/8/1024/1024=0.47M,粗略估计2000客户进行查询,存储key占用的内存=2000*0.47(将近1G),如果查询频繁,则必然会出现内存溢出的风险。


优化方法:针对客户的操作频率,一般不会不停地进行数据查询操作,所以可以将客户查询存储的key设置过期时间,这样可以减小内存压力。


 


------------------------------------------分割线------------------------------------------


具体下载目录在 /2018年资料/12月/19日/Redis数据类型与常用操作详解/


------------------------------------------分割线------------------------------------------



编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql通过命令行删除表 下一篇MySQL数据库之存储过程与存储函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }