天玑阁

vuePress-theme-reco gqsu    2018 - 2021
天玑阁 天玑阁

Choose mode

  • dark
  • auto
  • light
主页
时间轴
文档
  • vuepress-reco
分类
  • elasticsearch
  • Hadoop
  • life
  • linux
  • note
  • Apache James
  • collection
  • Dubbo
  • git
  • jwt
  • k8s
  • mongodb
  • ali
  • netty-socketio
  • nginx
  • node
  • oracle
  • own
  • rabbitmq
  • shell
  • vuepress
  • springDataJpa
  • web
  • wechat
  • redis
  • springBoot
  • rabbitmq,springBoot
  • springCloud
  • sql
  • study
  • util
标签
author-avatar

gqsu

156

Article

42

Tag

    主页
    时间轴
    文档
    • vuepress-reco
    分类
    • elasticsearch
    • Hadoop
    • life
    • linux
    • note
    • Apache James
    • collection
    • Dubbo
    • git
    • jwt
    • k8s
    • mongodb
    • ali
    • netty-socketio
    • nginx
    • node
    • oracle
    • own
    • rabbitmq
    • shell
    • vuepress
    • springDataJpa
    • web
    • wechat
    • redis
    • springBoot
    • rabbitmq,springBoot
    • springCloud
    • sql
    • study
    • util
    标签

    redis Categories

    vuePress-theme-reco gqsu    2018 - 2021
    • elasticsearch 20
    • Hadoop 2
    • life 6
    • linux 9
    • note 9
    • Apache James 2
    • collection 1
    • Dubbo 1
    • git 1
    • jwt 1
    • k8s 1
    • mongodb 1
    • ali 2
    • netty-socketio 2
    • nginx 2
    • node 3
    • oracle 1
    • own 1
    • rabbitmq 2
    • shell 1
    • vuepress 1
    • springDataJpa 1
    • web 2
    • wechat 2
    • redis 6
    • springBoot 27
    • rabbitmq,springBoot 1
    • springCloud 13
    • sql 6
    • study 24
    • util 5
    redis--事务处理

    严格意义上讲,redis事物不支持 原子性和持久性(A和D),只支持隔离性和一致性(I和C)。这里的原子性指的是redis的事物操作,不支持事物的回滚,但redis是单线程模型,其本身的普通操作就是原子性的。

    # 通过MULTI开启事物,然后命令入列,EXEC结束事物

    1、命令行操作:

    127.0.0.1:6379> MULTI
    OK
    127.0.0.1:6379> SET Book_Name "GIt Pro"
    QUEUED
    127.0.0.1:6379> SADD Program_Language "C++" "C#" "Jave" "Python" 
    QUEUED
    127.0.0.1:6379> GET Book_Name
    QUEUED
    127.0.0.1:6379> EXEC
    1) OK
    2) (integer) 4
    3) "GIt Pro"
    

    2、java代码:

    //Transaction transaction = jedis.multi();
    redisTemplate.multi();
    redisTemplate.lpush("key", "11");
    redisTemplate.lpush("key", "22");  
    redisTemplate.lpush("key", "33");
    redisTemplate.exec();
    

    注意一定要在配置文件中,开启事物:

    gqsu 2018/8/6上午11:26:09 redis
    redis-其他

    # 1、什么是Redis?简述它的优缺点?

    Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。

    因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。

    Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。

    比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。

    另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

    # 2、Redis相比memcached有哪些优势?

    (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型

    (2) redis的速度比memcached快很多

    (3) redis可以持久化其数据

    (4) redis支持数据的备份,即 master-slave 模式的数据备份。

    (5) 使用底层模型不同,它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

    (6) redis最大存储的数据可以达到1GB,而memcache只有1MB

    一致性可以分为最终一致性和强一致性。数据库和缓存双写,就必然会存在不一致的问题。如果对数据有强一致性要求,不能放缓存。我们所做的一切,只能保证最终一致性。

    gqsu 2018/8/1下午3:25:42 redis
    redis进阶

    # 其它不常用命令

    # 位图数据

    主要用于存放 bool 型数据,byte数组,使用位图操作 getbit/setbit 等将 byte 数组看成「位数组」来处理,大大减少节约存储空间。

    特别注意的是位操作存放的是ASCII码。

    例子:存储一个“hello”,利用Python 命令行可以很方便地得到每个字符的 ASCII 码的二进制值。

    >>> bin(ord('h'))
    '0b1101000'   # 高位 -> 低位
    >>> bin(ord('e'))
    '0b1100101'
    >>> bin(ord('l'))
    '0b1101100'
    >>> bin(ord('l'))
    '0b1101100'
    >>> bin(ord('o'))
    '0b1101111'
    
    gqsu 2018/7/28上午9:20:57 redis
    redis缓存

    # 使用

    使用redis作为spring的缓存路径,支持spring cache的环境。以springBoot工程为例

    1、添加依赖和配置

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

    2、配置redis文件,此处省略

    gqsu 2018/7/20上午11:03:00 redis
    redis入门-2.五大数据类型介绍

    # 数据结构基础教程

    # String类型

    字符串最大长度为512M。

    初始化字符串:

    > set ireader beijing.zhangyue.keji.gufen.youxian.gongsi
    OK
    

    获取字符串内容:

    > get ireader
    "beijing.zhangyue.keji.gufen.youxian.gongsi"
    

    获取字符串长度:

    > strlen ireader
    (integer) 42
    

    获取子串:

    > getrange ireader 28 34
    "youxian"
    
    gqsu 2018/7/16下午3:25:42 redis
    redis入门-1.基本概念

    # 简介

    Redis是目前业界使用最广泛的内存数据存储。 相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。 除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。 可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。

    在互联网场景下,尤其 2C 端大流量场景下,需要将一些经常展现和不会频繁变更的数据,存放在存取速率更快的地方。 缓存就是一个存储器,在技术选型中,常用 Redis 作为缓存数据库。

    # 流程

    以获取商品详情举例,说明缓存的优势:

    a. 从商品 Cache 中获取商品详情,如果存在,则返回获取 Cache 数据返回。

    b. 如果不存在,则从商品 DB 中获取。获取成功后,将数据存到 Cache 中。则下次获取商品详情,就可以从 Cache 就可以得到商品详情数据。

    c. 从商品 DB 中更新或者删除商品详情成功后,则从缓存中删除对应商品的详情缓存

    gqsu 2018/7/15下午3:56:47 redis
    Prev 1 ... 1 ... 1 Next Jump To Go