您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
redis缓存技术
 
  3562  次浏览      19
 2018-2-2 
 
编辑推荐:
本文来自于csdn,本文的内容大概如下:数据类型List链表、set集合类型、Sort set 排序集合类型、Hash数据类型、持久化功能、Append-only file(缩写aof) ##方式等。

redis是非关系型数据库Nosql的代表,

这类数据库主要有以下特点:

非关系型的(sql语句对它不起作用,不需要建表存数据,它是直接存储),分布式(主从复制),开源的水平可扩展的。

优点:

它可以处理超大量的数据,运行在便宜的pc服务器集群上,击碎了性能瓶颈(性能好,也不需要优化,对数据高并发读写,对海量数据的高效率存储和访问,对数据的高扩展性和高可用性(没有表结构,分布式简单))

redis的操作类型,最基本类型是string,可以包含任何数据(图片和序列化的对象都可以),单个值最大上限为1Gbtye;如果只使用String类型,redis可以看作加上持久化特性的memcache。

## string类型操作 ##

1. set key value 设置key对应的值为String类型的value

2. mset key1 value1…keyN valueN 一次设置多个key值

3. mget key1 key2….keyN 一次获取多个key的值

4.incr key 对key的值做加加操作,并返回新的值(例如就像java中的i++)

incr:increament 增长,该指令可以对key进行累加操作,默认累加1, 该指令可以对新key或已有key进行操作(新key:创建该key并累加1,其值为1;

已有key:key 的值类型要求必须是整型的)

5.decr key 同上,但是对key的值做减减操作

6.incrby key integer 同incr,加指定值

7.decrby key integer 同decr,减指定值

8.append key value 给指定key的字符串值追加value(类似于Java中的+=操作)

9.substr key start end 返回截取过的key的字符串值(包括start和end标记位置的内容)

数据类型List链表

list类型其实就是一个双向链表,通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列

1,该链表list的使用场景

获取最新的10个登录用户的信息:select * from user order by logintime desc limit 10;

以上的sql语句可以实现用户需求,但是数据量大的时候,全部数据都要受到影响(例如淘宝数据量过亿),对数据库的负载比较高。必要情况还需要对关键字段(id或logintime)设置索引,但是索引是比较耗系统资源的。

这样我们可以设置一个list链表实现以上功能,可以在list链表中只保留10个数据,没进入一个新数据,就会删除一个旧数据。每次就可以从链表中直接获得需要的数据,极大的节省了资源消耗

list类型的操作

lpush key string 在key对应list的头部添加字符串元素。

rpush key string 同上,在尾部添加字符串元素。

lpop key 从list的头部删除元素,并返回删除元素。

rpop key 从list的尾部删除元素,并返回删除元素。

llen key 返回 key 对应list的长度,key不存在返回0,如果key对应类型不是list返回错误。

lrange key start end 返回指定区间内的元素,下标从0开始。

ltrin key start end 截取list,保留指定区间内元素

set集合类型

redis的set是string类型的无序集合。

set元素最大可以包含(2的32次方-1)个元素。

关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference),通过这些操作可以很容易的实现qq中好友推荐的功能

set类型的操作:

Sort set 排序集合类型

和set一样,sorted set 也是string类型元素的集合,不同的是每个元素都会关联一个权,通过权值可以有序的获取集合中的元素,排序集合中的每个元素都是值、权的组合

操作排序集合

使用场合:

获取热门帖子(回复量)信息:我们做一个排序集合,里面只保留5个元素信息,该5个元素是回复量最高的,每个帖子被回复的时候,都有机会进入该集合里面,但是只有回复量最高的5个帖子会存在于集合中,回复量低的帖子就会被删除。

总结:关于重复元素

set类型:没有

list链表类型:有

sort set类型:没有

Hash数据类型

操作Hash数据类型

持久化功能

redis是存储在内存中的,如果死机或者关机,数据就会丢失,为了内部数据的安全考虑,会把本身的数据以文件的形式保存在硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存中,数据保存到硬盘的过程就称之为“持久化”效果。

1、snap shotting 快照持久化

该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据非常多(10-20G)就不适合频繁该持久化操作

快照持久化在本地硬盘保留的数据备份文件 dump.rdb

在redis.conf配置文件看到备份频率:

save 900 1 当900秒内超过1个key被修改,就发起快照保存

save 300 10 当300秒内超过10个key被修改,就发起快照保存

save 60 10000 当60秒内超过10000个key被修改,就发起快照保存

Append-only file(缩写aof) ##方式

会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库内容

redis的事务

redis是单线程设计,不支持多线程并发,所有的redis操作都是原子性操作

centos6.7安装redis出现的错误

解决方案:[root@localhost redis-3.0.4]# make MALLOC=libc

安装成功后redis目录下src目录下的文件

redis后端启动配置

在redis.conf配值文件中,配置daemonized no改为yes即可

启动时要添加配置文件:./redis-server redis.conf

   
3562 次浏览       19
相关文章

基于EA的数据库建模
数据流建模(EA指南)
“数据湖”:概念、特征、架构与案例
在线商城数据库系统设计 思路+效果
 
相关文档

Greenplum数据库基础培训
MySQL5.1性能优化方案
某电商数据中台架构实践
MySQL高扩展架构设计
相关课程

数据治理、数据架构及数据标准
MongoDB实战课程
并发、大容量、高性能数据库设计与优化
PostgreSQL数据库实战培训