zoukankan      html  css  js  c++  java
  • redis的具体使用

    redis的介绍

    mysql是以文件的方式保存的硬盘中的。就运行速度应该是按cpu、内存、硬盘的速度由快到慢

    而redis就是运用了内存的读取速度比硬盘快很多的原理上,开发的一款内存高速缓冲数据库。数据模型为key-value。

    支持丰富的数据结构:String  、list、 hash、 set、 sorted set、持久化保证的数据安全。

    缓存分为:数据缓存、页面缓存

    redis的优点:
    1.不仅仅支持简单的k/v类型的数据,同时还支持了list、set、zset、hash等数据结构的存储

    2.redis支持master-slave(主从)模式应用。

    3.redis支持数据的持久化、将内存的数据保存在磁盘中、重启的时候可以再次加载进行使用

    4.redis单个value的最大限制是1GB,而memcached的只能保存1MB的数据。

    redis的具体使用

     redis中key的命名规则:除了" "和空格不能作为key的名字的组成部分,其他的都可以字符数字都可以作为key的名字的组成部分,长度也没有限制。

    不同redis数据库切换:最多有16个数据库提供,select 0 查询的是第一个数据库  角标从0到15。

    String字符串操作类型:

    redis的String类型可以包含任何数据,包含jpg图片或者序列化的对象

    单个value最大值的上限是1G字节

    如果只用做String类型,redis可以看作是被加上持久性的memcache。

    incr  : increament  增长

    该指令可以对key进行累加的1的操作,默认是累加1操作,类似于i++的操作。

    该指令可以针对新key和老key进行操作

    新key:创建高key并累加,其值为1

    已有key:key的信息值类型必须为整型。

    数据类型List链表

    list其实一个双向链表,通过push、pop操作从链表头部或者尾部添加删除元素、这使得list即可以做为栈也可以做为队列。

    list链表应用场合:
    例如正常来说获取最新10个登陆用户的信息:

    select * from user_info order by  build_time desc limit 10;

    以上sql语句可以实现用户需求,但是数据多的时候,全部数据都要收到影响,对数据库的负载比较高,必要情况下还要给经常需要使用的字段建立索引

    索引也比较耗费系统资源。(索引:比如将数据库的数据当作一本字典,比如通过拼音进行索引,如果创建的索引过的的情况下,比如字典真正的字才

    100页,但是却创建了200页的索引。本身的数据才100M,但是却创建了200M的拼音的索引。这很耗费系统资源。)

    如果使用list来进行以上操作、可以在list链表中只保存最新的10个数据,(先进先出,队列)当数据满10个的时候,每进来一个新的数据,就删除最老一个数据

    每次就可以直接从这个链表中获取想要的数据,极大的节省了各方面资源消耗。

    list操作类型: (l到r   l头  r尾   按照文字的顺序)

    数据类型set

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

    set集合最大可以包含(2的23次方-1)个元素

    关于set集合类型除了基本的添加删除操作、其他有用的操作还包含集合的取并集、交集、差集。通过这些操作很容易实现qq的好友推荐,共同好友之类的

     

     (NoSql)

    数据类型sortset排序集合类型

    和set一样sorted set也是String类型元素的集合。

    不一样的是每一个元素都会关联一个权

    通过权值可以有序的获取集合中的元素

    sort set集合中每个元素其实就是权和值的组合。

    该sort set类型适用场景

    获取热门帖子(回复量)信息:

    select * from message order by backnum desc limit 5;

    (以上需求可以通过sql实现,但是sql比较耗费系统资源)

    zadd key score member :   zadd  key (权重) (值)

    例如:zadd tiezi  100 10  (可以认为id为10的帖子的权重是100)

    数据类型hash

    hash数据类型存储的数据与mysql数据库中存储的一条记录非常相似(一条数据多个字段)。

     关于重复元素:

    set和sort set没有重复元素

    list可以有重复元素

    持久化

    1.snap shotting(快照持久化)

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

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

     

    2.(append only file)AOP持久化

    本质:把用户执行的每个“写”指令(添加、删除、修改)都备份到文件中,还原数据的时候就是执行具体写指令而已。

    开启AOP持久化:修改redis.conf文件。(同时可以开启备份文件的名字,默认是qppendonly.aop)

    开启AOP持久化(会清空redis内部的数据)。

    配置文件被修改,需要删除旧进程、在根据新的配置文件启动新进程。 新进程启动好以后,可以看到对应的qppendonly.aop的文件

     

    对āof备份文件做优化处理

    对appendonly.aop文件做优化压缩处理。

    (例如:多个 incr指令变成了一个set指令)

     redis的主从模式

    配置redis.conf文件,成为192.168.39.159的从服务器。

    之后文件保存退出,杀死旧的redis进程,启动新的redis进程。

    默认配置,从服务器禁止写入操作:(配置完成后,主服务器只要写入数据了,从服务器就能读取到数据)

  • 相关阅读:
    理解闭包Closure
    理解商集
    理解格
    理解距(数学)
    微积分英文词汇,高数名词中英文对照,高等数学术语英语翻译一览
    对Extjs中store的多种操作
    mysql中的除法取整
    【python】用asq实现count(distinct cln)
    Timer 和TimerTask的使用
    使用vim.rc配置vim
  • 原文地址:https://www.cnblogs.com/songcuiting/p/8654725.html
Copyright © 2011-2022 走看看