1.NOSQL的理解

NOSQL是不仅仅是SQL,说的就是sql的补充,但是不能替代SQL。

nosql库:memcached、memcachedb、redis

2.redis 简介

Redis是一个基于key-value键值对的持久化数据库存储系统,redis和memcached缓存服务很像,但是redis支持的数据存储类型更丰富,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)等。

Redis持久化缓存还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是,redis还支持maser-slave(主从)同步,这和mysql很像。

3.redis优点

  • 性能高:每秒支持100K读写;数据库一般也就几百
  • 丰富的数据类型:Redis支持String、lists、Hashes等
  • 原子:所有操作都是原子性的
  • 丰富的特性:Redis还支持publish/subscribe通知,key过期
  • redis支持异机主从复制
  • 可以持久化存储数据

4.redis的数据类型

常用的5种:string、hash、list 、set、sorted set

5.redis的应用场景

Mysql数据库实际上是适合进行海量数据存储的,加上通过Memcached将热点数据存放到内存cache里,达到加速数据访问的目的,绝大部分公司都曾经使用过这样的架构,但是随着业务数据量的不断增加,和访问量的持续增长,很多问题就会暴露。

1.需要不断的对mysql进行拆库拆表,memcached也需要不断扩容,扩容和维护工作占据大量开发运维时间。

2.memcached与mysql数据库数据一致性问题是个老大难

3.memcached数据命中率低或者down机,会导致大量访问直接穿透到数据库,导致mysql无法支撑访问。

4.跨机房cach同步一致性问题

场景:

1.Redis最佳场景是内存

2. memcached的替代场景

3.除了key/value之外的更多数据类型支持时,使用Redis

4.当存储的数据不能被剔除时,使用Redis更合适。

5.支持负载均衡的场景(主从式,可以看成是数据库)

6.redis的安装步骤

1) cd /home/oldboy/tools/
 2) wget -q http://download.redis.io/releases/redis-2.8.9.tar.gz   -- -q表示 不显示的下载
 3) ls redis-2.8.9.tar.gz
 4) tar zxf redis-2.8.9.tar.gz
 5) cd redis-2.8.9
 6)less README ---可以读readme
 7)make MALLOC=jemalloc --编译
 8)make PREFIX=/application/redis-2.8.9 install  --编译安装
 9)ln -s /application/redis-2.8.9/ /application/redis    --建立软连接
 10)ll /application/    --查看
 11)tree /application/redis       目录展示

在bin目录下有5个文件:

redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-check-aof:更新日志检查
redis-check-dump:用于本地数据库检查

12) export PATH=/application/redis/bin/:$PATH   --环境变量配置
 13). /etc/profile   --环境变量生效
 14)which redis-server   --查看命令是否生效
 15)mkdir /application/redis/conf     --创建redis配置文件的生效目录
 16)cp redis.conf  /application/redis/conf/    --将下载的文件中的配置文件放到创建的配置目录里面
 17)redis-server /application/redis/conf/redis.conf &     --启动redis
 18)killall redis-server   --杀死进程 
 19)sysctl vm.overcommit_memory=1    ---当内存小的时候,需要执行此命令
 20)redis-server /application/redis/conf/redis.conf &   ---启动redis
 21)lsof -i:6379   --通过端口查看是否生效
 22)redis-cli shutdown    --关闭redis

7.通过客户端测试redis服务

连接本地服务器命令:redis-cli

127.0.0.1:6379> set no001 djw
OK
127.0.0.1:6379> get no002
"oldboy"
127.0.0.1:6379> get no001
"djw"
[root@djw3 application]# redis-cli -h 192.168.0.102 -p 6379 get no002
"oldboy"
[root@djw3 application]# redis-cli del  no002                           
(integer) 1
[root@djw3 application]# redis-cli -h 192.168.0.102 -p 6379 get no002
(nil)
[root@djw3 application]# telnet 192.168.0.102 6379
Trying 192.168.0.102...
Connected to 192.168.0.102.
Escape character is '^]'.
get no001
$3
djw

7.redis数据类型(常见的是五种:String字符串、Hash哈希、List列表数据、Set集合、Sorted set排序集合)

其实这些了解下,开发、DBA一般会有自己的模式进行数据的定义,例如“object-type:id:field”就是不错的注意,像这样  user:1000:password,运维只要搭建好平台就行。

字符串类型:如果是字符串类型,就是一个持久的memcached服务器了,也可以是二进制文件,比如图片,值的长度不能超过1GB。

[root@djw3 ~]# redis-cli set  mykey "my blnary safe value"
OK
[root@djw3 ~]# redis-cli get mykey
"my blnary safe value"

可以计数:

[root@djw3 ~]# redis-cli set  djw 100
OK
[root@djw3 ~]# redis-cli incr  djw    
(integer) 101
[root@djw3 ~]# redis-cli incr  djw
(integer) 102
[root@djw3 ~]# redis-cli incr  djw
(integer) 103

列表类型:

[root@djw3 ~]# redis-cli  rpush messages "Hello have are you ?"
(integer) 1
[root@djw3 ~]# redis-cli  rpush messages "fine thanks I'm having fun with Redis"
(integer) 2
[root@djw3 ~]# redis-cli  rpush messages "I should look into this NOSQL thing ASAP"
(integer) 3
[root@djw3 ~]# redis-cli lrange messages 0 2              
1) "Hello have are you ?"
2) "fine thanks I'm having fun with Redis"
3) "I should look into this NOSQL thing ASAP"

集合:

[root@djw3 ~]# redis-cli sadd myset a
(integer) 1
[root@djw3 ~]# redis-cli sadd myset b
(integer) 1
[root@djw3 ~]# redis-cli sadd myset c
(integer) 1

[root@djw3 ~]# redis-cli smembers myset

1) "c"
2) "b"
3) "a"

8.redis版本安装(可以是地址里面的版本进行了变化,我的安装并不是成功的,在make编译的时候报错,不必深究,知道有客户端即可)

1.wget https://github.com/nicolasff/phpredis/archive/master.zip --no-check-certificate
 2.unzip master.zip
 3. cd phpredis-master/
 4. /application/php/bin/phpize
 5. ./configure --with-php-config=/application/php/bin/php-config
 6.make && make install
echo "extension  = redis.so" >> /application/php/lib/php.ini

9.对于redis的使用,可在其配置文件中进行配置。具体场景可根据企业需求进行

[root@djw3 conf]# cd /application/redis/conf/redis.conf

四、NOSQL之Redis持久化缓存服务基础实战第三部的更多相关文章

  1. 【新手总结】在.Net项目中使用Redis作为缓存服务

    最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写,很零碎也没沉淀下来什么,这次算是一个系统学习和实践过程的总结. 和Redis有关的基础知识 ...

  2. 在.Net项目中使用Redis作为缓存服务

    转自:http://www.cnblogs.com/hohoa/p/5771255.html 最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写 ...

  3. Redis系列(四):Redis持久化和主从复制原理

    一.持久化 所谓的持久化就是把内存中的数据写到磁盘中去,防止服务宕机后内存数据丢失.Redis4.0之前提供了两种持久化方式:RDB(默认) 和AOF,Redis4.x之后新增了一种混合持久化(本文所 ...

  4. 【docker构建】基于docker搭建redis数据库缓存服务

    搭建redis服务 首先拉取镜像==>运行镜像为容器 # 先搜索下redis镜像 [root@VM_0_10_centos wordpress]# docker search redis # 拉 ...

  5. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  6. Redis持久化(转载)

    原文地址:http://www.jianshu.com/p/2f14bc570563?from=jiantop.com 数据持久化 Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF ...

  7. 高并发简单解决方案————redis队列缓存+mysql 批量入库(ThinkPhP)

    问题分析 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量入库和直接入库性能差异] 问题二:批量入库就需要有高并发的消息队列,决定采用redis lis ...

  8. Redis(二)、Redis持久化RDB和AOF

    一.Redis两种持久化方式 对Redis而言,其数据是保存在内存中的,一旦机器宕机,内存中的数据会丢失,因此需要将数据异步持久化到硬盘中保存.这样,即使机器宕机,数据能从硬盘中恢复. 常见的数据持久 ...

  9. NoSQL:redis缓存数据库

    一 Redis介绍 Redis和Memcached类似,也属于key-value nosql 数据库 Redis官网redis.io, 当前最新稳定版4.0.1 和Memcached类似,它支持存储的 ...

随机推荐

  1. MyBatis的初始化过程。

    对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程. 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置 ...

  2. 【LeetCode】组合总和

    [问题]给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制 ...

  3. 对OpenSSL心脏出血漏洞的试验

    1.安装OpenSSL环境 sudo apt-get install openssl sudo pip install pyopenssl(中间会提示ffi.h 没有那个文件或目录,sudo apt- ...

  4. bzoj1415 NOI2005聪聪和可可

    %%%http://hzwer.com/2819.html 先各种暴力搞出来p[x][y](从x到y下一个最近应该到达的位子) 然后就记忆化搜索??(雾) #include<bits/stdc+ ...

  5. 《机实战》第2章 K近邻算法实战(KNN)

    1.准备:使用Python导入数据 1.创建kNN.py文件,并在其中增加下面的代码: from numpy import * #导入科学计算包 import operator #运算符模块,k近邻算 ...

  6. jdk8安装

    ==安装jdk1.8== [root@ycj ~]# mkdir -p /usr/local/src/jdk //创建目录 [root@ycj jdk]# cd /usr/local/src/jdk ...

  7. PAT 2019 秋

    考试的还行.不过略微有点遗憾,但是没想到第一题会直接上排序和dfs,感觉这次的题目难度好像是倒着的一样.哈哈哈哈. 第一题实在是搞崩心态,这道题给我的感觉是,可以做,但事实上总是差点啥. 第二题,第三 ...

  8. Java编译器 & Java解释器 & JVM

    转自:https://www.cnblogs.com/chengdabelief/p/6576320.html JVM JVM有自己完善的硬件架构,如处理器.堆栈(Stack).寄存器等,还具有相应的 ...

  9. lambda的题

    def num(): return [lambda x: i*x for i in range(4)] print([m(2) for m in num()]) 这个式子,lambda相当于闭包函数, ...

  10. 【每日Scrum】第四天冲刺

    一.计划会议内容 连接数据库报错,解决问题中. 二.任务看板 三.scrum讨论照片 四.产品的状态 无 五.任务燃尽图