若是转发,请申明博文来源: www.cnblogs.com/xinysu/ 
 ,版权归 微博 苏家小萝卜 所有。望各位扶助!

  



 

   
少年入门笔记,整理出来一齐入坑!入门的视屏来自imooc的:

1 NOSQL概述

什么是noSQL

  • not only sql
  • 非关系型数据库

干什么需求NoSQL

  • web2.0广阔动态网址的兴起
  • high performance
    ,高并发读写,动态页面展现与相互,比如腾讯网点赞探究等操作,实时总计在窥伺者数排名的榜单等
  • huge storage,海量数据的快速存储和访问,大型网站的顾客登入连串
  • high scalability && high availability,高可扩张性和高可用性

主流NOSQL产品

  • redis,mongodb,couchdb

NoSQL的特点

  • 易扩展
  • 利落数据模型
  • 运气据量,高品质
  • 高可用

NoSQL数据库的四大分类

键值存款和储蓄,redis

  • 优势,急速查询
  • 劣点,存款和储蓄数据远远不足结构化

列存储,hbase

  • 优势,快速查询
  • 劣势,功用局限

文书档案数据库,mongodb

  • 优势,数据结构供给不严加
  • 劣点,查询质量并非特意高,贫乏统风华正茂查询的语法

图表数据库,infogate

  • 优势,社交网络,利用图结构的有关算法
  • 弱点,供给对任何图做算法解析,不实惠布满式方案

 图片 1

2 redis概述

    C语言编写的高质量键值对数码,扶植的键值数据类型:

  • 字符串类型
  • 列表类型
  • 稳步集中类型
  • 散列
  • 集中类型

    Redis的运用场景:

  • 缓存
  • 网址访谈总结
  • 职分队列
  • 数据过期管理
  • 行使排名榜
  • 布满式集群架构中的session分离

3 redis安装和应用

3.1 redis安装

依附景况

  • gcc-c++

    1 情形筹划#官方网站下载 redis 3.2.5本子
    wget 
     
    #安装 C 编译环境    yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc gcc-c++
     
    2 设置
        解压安装包后,步向文件目录编译,编写翻译截至时,会提醒 Hint: It’s a good idea to run ‘make test’  ,建议在设置前先测量试验预安装下,make test预安装后,碰着错误:You need tcl 8.5 or newer in order to run the Redis test ,缺点和失误安装包tcl,所以必要先安装那些 安装包后重国民党的新生活运动行 make test,平常后再拓宽redis安装。
        详细步骤如下:
     
    #解压二进制包
    tar -zvxf /opt/redis-3.2.5
     
    #步向到文件目录
    cd redis-3.2.5
     
    #编写翻译make
     
    #测量检验安装(微微花费点时间)
    make test
     
    #可能会提醒必要设置新型版的tcl
    #yum install tcl 
     
    #内定路径安装
    make PREFIX=/usr/local/redis install 

 

  安装收尾后,步入到安装路线中,

[root@bogon bin]# ls -lh /usr/local/redis/bin/

total 22M

-rwxr-xr-x. 1 root root 2.4M Aug 13 18:40 redis-benchmark

-rwxr-xr-x. 1 root root 5.5M Aug 13 18:40 redis-check-aof

-rwxr-xr-x. 1 root root 5.5M Aug 13 18:40 redis-check-rdb

-rwxr-xr-x. 1 root root 2.5M Aug 13 18:40 redis-cli

lrwxrwxrwx. 1 root root   12 Aug 13 18:40 redis-sentinel ->
redis-server

-rwxr-xr-x. 1 root root 5.5M Aug 13 18:40 redis-server

 

    那多少个指令用途分别是:

redis-benchmark

  • 特性测验工具

redis-check-aof

  • aof文件修复工具

redis-check-rdb

  • rdb文件检查工具

redis-cli

redis客户端

redis-server

  • redis服务器运转命令

redis-sentinel

3.2 配置文件改善

 1 #拷贝conf文件到/etc目录
 2 cp /opt/redis/redis-4.0.1/redis.conf /etc/redis.conf
 3  
 4  
 5 #redis.conf 参数说明
 6  
 7 ################################## NETWORK #####################################
 8  
 9 #绑定的主机地址
10 bind 127.0.0.1
11  
12 #保护模式,是否允许 没有认证配置的主机或接口连接redis,默认是启动保护模式,则不允许这种情况
13 protected-mode yes
14  
15 #指定redis的监听端口,默认端口是6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字,嗯,你开发的,你说了算。
16 port 6379
17  
18 # In high requests-per-second environments you need an high backlog in order
19 # to avoid slow clients connections issues. Note that the Linux kernel
20 # will silently truncate it to the value of /proc/sys/net/core/somaxconn so
21 # make sure to raise both the value of somaxconn and tcp_max_syn_backlog
22 # in order to get the desired effect.
23  
24 tcp-backlog 511
25  
26 #客户端链接多长时间后关闭链接,单位是秒,指定为0,则表示关闭该功能
27 timeout 0
28  
29 # A reasonable value for this option is 300 seconds, which is the new
30 # Redis default starting with Redis 3.2.1.
31 tcp-keepalive 300
32  
33 ################################# GENERAL #####################################
34  
35 #Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
36 daemonize yes
37  
38 # If you run Redis from upstart or systemd, Redis can interact with your
39 # supervision tree. Options:
40 #   supervised no      - no supervision interaction
41 #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
42 #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
43 #   supervised auto    - detect upstart or systemd method based on
44 #                        UPSTART_JOB or NOTIFY_SOCKET environment variables
45 # Note: these supervision methods only signal "process is ready."
46 #       They do not enable continuous liveness pings back to your supervisor.
47 supervised no
48  

3.3 服务运行与关闭 

 1 #服务端启动
 2 [root@bogon redis-4.0.1]# cd /usr/local/redis/
 3 [root@bogon redis]# ./bin/redis-server /etc/redis.conf
 4 74537:C 13 Aug 18:53:30.774 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
 5 74537:C 13 Aug 18:53:30.774 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=74537, just started
 6 74537:C 13 Aug 18:53:30.774 # Configuration loaded
 7 [root@bogon redis]# ps axu | grep redis
 8 root      74538  0.6  0.2 145248  2168 ?        Ssl  18:53   0:00 ./bin/redis-server 127.0.0.1:6379
 9 root      74665  0.0  0.0 112648   968 pts/4    S+   18:53   0:00 grep --color=auto redis
10  
11 #客户端启动
12 redis-cli [-h 127.0.0.1] [-p 6379]
13 127.0.0.1:6379> ping
14 PONG
15  
16 #存储键值对
17 127.0.0.1:6379> set name imooc
18 OK
19  
20 #获取name对应的value
21 127.0.0.1:6379> get name
22 "imooc"
23  
24 #获取所有keys
25 127.0.0.1:6379> keys *
26 1) "name"
27  
28 #删除keys
29 127.0.0.1:6379> del name
30 (integer) 1
31 127.0.0.1:6379> get name
32 (nil)
33  
34 #关闭服务端
35 redis-cli shutdow

4 redis-py的入门

   
redis有支撑特别两种语言编写的客户端,能够从官方网址查阅   ,redis-py是redis官方网站首荐的python顾客端开拓包,自己只会点点python,所以从这些入门。

    redis-py的github地址:

 5 redis数据类型

  键值对种key的注意事项:

并非过长

  • 最为不用超越10贰拾陆个字节
  • 不独成本内部存款和储蓄器,也潜移默化查找效用

不用过短

  • 譬喻说设置为a,未有实际意义,或者会下落key的可读性

集合命名规范

5.1字符串 string

string中的三个key对应贰个value,values最长可达512Mb。

 

string常用命令:

赋值

  • set *key value*

取值

  • get *key*

取值后赋值

  • getset *key value*
  • 图片 2

数值增减

自增1

  • 设若该key空头支票,则开创该key,并赋值为0,0自增后为1,等同于扩张【key,1】键值对
  • 如果该key存在,则value自增加1
  • incr *key*

自减1

  • 如果该key不设有,则开创该key,并赋值为0,0自减后为-1,等同于扩大【key,-1】键值对
  • 如果该key存在,则value自减1
  • decr*** *key

自增钦点值

  • 若果该key海市蜃楼,则开创该key,并赋值为0,0自增numbers,等同于扩大【key,numbers】键值对
  • 如果该key存在,则value自增numbers
  • incrby*** *key
    numbers

自减钦点值

  • 借使该key空中楼阁,则创立该key,并赋值为0,0自减numbers,等同于增添【key,-numbers】键值对
  • 如果该key存在,则value自减numbers
  • decrby key numbers
  • 图片 3

删除

  • del key

扩展

  • value追加string内容
  • append*** *key
    string
  • 图片 4

5.2 哈希 hash

    hash能够积攒多个键值对里面包车型大巴投射,它就好像贰个Mini型的redis。

赋值

  • hset *key field
    value*
  • hmset *整理出来一起入坑。key field
    value [field value … ]*
  • 图片 5

取值

  • hget key field
  • hmget key field [field
    …]

  • hgetall key

  • 图片 6

增添数字

  • hincrby key field number
  • 图片 7

删除

  • hdel key field
  • del *key*
  • 图片 8

进修命令

  • hexists 整理出来一起入坑。*key field*
  • hlen *key*
  • hkeys *key*
  • hvals *key*
  • 图片 9

5.3 字符串列表 list

   
lish的相继是国有国法插入的相继,能够在头顶跟后面部分插入数据,借使是在list的互相实行操作,那么效用是超级高的,可是要是在list中,则会损耗一定时期。

    list的类型:

arraylist使用数组格局

  • 听大人说目录查询速度是十分的快的
  • 只是新扩展跟删除操作涉及到位移操作,则会比较慢

linkedlist使用双向链接方式

  • 整理出来一起入坑。各种成分都记录了内外成分的指针,删除跟新扩充只需求改过前后指针,数据操作相当的慢

    list常用的授命:

两端增加

  • lpush *key value
    [value …]*
  • rpush key value [value …]

翻看列表

  • lrange *key start
    stop*
  • 图片 10

钦定地方push

lset *key index value*

– 列表中第多少个职分插入value,注意地点从0起头

指定value插入值

  • linsert *key
    before|after pivot value*
  • 在列表中,从左到右,第贰个非常pivot那几个值的前方或然前面,插入valuse
  • 图片 11

两端弹出

lpop *key*

  • 删除列表最左边的value

rpop *key*

  • 去除列表最左边的value

rpoplpush *source
distination*

  • 整理出来一起入坑。从source列表右侧删除四个value,并把这几个value存款和储蓄步入distination列表中
  • 适用于音讯发布进程中的备份操作
  • 图片 12

获取列表成分个数

llen key

  • 获得列表的长度

恢宏命令

lpushx key value

  • 设若列表存在,则从左端插入push valuse步向列表中,不然重临0

rpushx key value

  • 假定列表存在,则从右端插入push valuse步向列表中,不然重临0

lrem key count value 

  • count>0,从列表的左端开始删除 值等于 value,大器晚成共删除count个
  • count<0,从列表的右端先河删除 值等于 value,风姿罗曼蒂克共删除count个
  • count=0,删除 整个列表中有所 值等于 value
  • 图片 13

5.4 字符串集结 set

   
和list类型差别的是,set会集中不允许现身重复的要素,set最大能够分包的要素是
4294967295 。注意,set中是向来不各种的。

   
 用于保养顾客对象的唯豆蔻年华性,甚至管理数量对象之间的关联关系,能够张开并集交集差集运算。举例购买A产品的客户ID,放在二个set中,购买此外一个B产品的顾客ID,放在别的七个set中,那样就很有利计算同一时间购买几个产品的顾客等。

 

    list常用命令:

增加删减成分

  • sadd key member [member …]
  • srem *key member [member …]*
  • del *key*

获得集合中的元素

  • smembers *key*
  • 图片 14

差集运算

sdiff *key1 [key …]*

  • 求集结key1与其余集结的差集

sdiffstore destination key1 [key
…]

  • 求集结key1与其余集结的差集,并把结果存款和储蓄在destination集合中

错落运算

sinter *key [key…]*

  • 求多少个汇聚的插花

sinterstore destination key [key…]

  • 求两个汇集的混杂,并把结果存款和储蓄在destination集结中

并集运算

sunion *key [key…]*

  • 求四个聚众的并集

sunionstore destination key [key…]

  • 求多少个聚众的并集,并把结果存款和储蓄在destination群集中
  • 图片 15

扩展命令

sismember* key member
*

  • 翻开member在key中是或不是存在

srandmember *key
[count]*

  • 集中key中大肆放回 count 个要素

scard *key*

  • 翻看集结个数
  • 图片 16

5.5 有序字符串集合 sorted set

    sorted
set跟set是相比相近的,集结中不容许现身重复的要素,那么有甚差异吧?sorted
set有各类,从小到大排序,更新操作超快,访谈数据也至极急速。

    应用场景:游戏排名、天涯论坛热点

 

    常用命令:

获得成分

zscore *key member*

  • 获取有序聚集中的某些元素的score值

zrange *key start stop
[withscores]*

zrangebyscore *key mim
max [withscores] [limit offset count]*

添比索素

  • zadd *key score
    member [score member …]*
  • 图片 17

删除成分

  • zrem*** *key member
    [member…]
  • zremrangebyscore *key
    min max *
  • 图片 18

推而广之查询

  • zincrby* **key
    increment member*
  • zscore *key member*
  • zcount *key min max*
  • 图片 19

6 keys的通用操作

keys *

  • 查阅全体keys
  • 图片 20

del *key [key…]*

  • 除去多少个key

exists *key*

  • 判定有个别key是或不是留存,存在重临1,不设有再次回到0

rename *key newkey*

  • 重命名有些key

expire *key seconds*

  • 安装某些key的生命期,过了那几个日子便是过期数据

ttl *key*

  • 查看该key的生命还余下多少秒
  • 图片 21

type *key*

  • 查看key的类型
  • 图片 22

7 redis的特性

7.1 好多据库

redis最多援助公斤个数据,下标0-15意味第多少个数据库。默许是在0号数据。切换数据库能够经过select
dbnumber 来切换,也足以经过move 来运动key从近日多少到钦命的数据库。

图片 23

7.2 事务

   
事务的指令:multi、exec、discard。redis中,假如某些命令推行倒闭,前面包车型大巴授命还有只怕会继续试行。multi,开启事务,那几个命令后的指令默以为在同三个业务内,exec等同于提交,discard等同于回滚。

 图片 24

8 redis的持久化

   
redis的高品质是因为数量都在内存中,要是数据库重启,则持有数据都会放任,那么什么样开展数据长久化呢?

RDB持久化

  • 暗许协助,在钦赐的时光内,把内部存款和储蓄器的多少写入磁盘

AOF持久化

  • 以日记的花样记录每三个操作,运转的时候,重新执行全部log

无持久化

  • 不开展悠久化,则以为redis的遵循为缓存,无需长久化数据

OdysseyDB与AOF同期选用

8.1 RDB持久化

优势

  • redis数据库仅包涵二个文件,对于文本备份是丰盛有助于的,借使系统现身灾祸时,较轻巧复苏
  • 不幸恢复生机时,备份文件较为轻便单独转移到其余存款和储蓄介质
  • 数据量非常大的时候,运行速度快

劣势

  • 不可以预知保证数据无错失,数据遗失时间 = 当前时刻-这段日子备份时间
  • 子进度实现持久化专业,假若数据集比相当大的时候,大概会形成长时间内redis所在服务器结束对外服务

配置

  • 福特ExplorerDB暗中同意配置文件中就有,能够查阅redis.conf文件中关于save的设置

    • 图片 25
      • save 900 1       :900秒内至罕有1个数据变动,则举行悠久化
        • save 300 10    
          :300秒内至稀少12个数据产生变化,则开展悠久化
        • save 60 10000 :
          60秒内至稀有1w个数据爆发变化,则张开悠久化
      • 图片 26

        • dbfilename 则是命名当前长久文件的名字
        • dir,则是概念当前长久化文件的存放路线
          • 图片 27

8.2 AOF持久化

优势

更加高的数据安全性

  • 每秒同步,最高错过1s多少
  • 每操作数同步,每回发生多少的变化都会立马记录到磁盘中,质量低于

append追Gavin件备份

  • 备份进度中冒出难题,不会毁掉此前的日志备份
  • 假若写入了轮廓上数量,然后现身系奔溃的主题材料,在redis下次运维早前,能够由此redis_check_aof工具解决多少意气风发致性难点

假定日志备份过大

  • redis会自动运行日志重写机制,append进程中,会把备份数据写入到老的备份文件中,何况会用二个新文件,记录此时期的改善数据说话

AOF满含一个格式清晰的多少改过操作语句的日志文件

劣势

  • 相近数量的数量集文件,比SportageDB的要打
  • AOF功能低于奥迪Q3DB
  • 急需人士陈设,非暗中同意配置

配置

在redis.conf文件中,配置一下内容

  • appendonly yes:启动appendonly,开启AOF备份
  • appendfilename “appendonly.aof” :AOF备份的公文名
  • appendfsync always   :每种改革操作同步备份叁遍
  • appendfsync everysec:1s联合实行备份叁回
  • appendfsync no          :不同步

测量检验配置

简短测量检验案例

  • redis中安排AOF,选取每操作一回就备份的机制,增加和删除改数据后,试行flushall,然后通过备份文件来还原数据到flushall在此以前

步骤

启航AOF,选取每操作一遍就备份

  • appendonly yes
  • appendfsync always

重启redis

  • /usr/local/redis/bin/redis-cli shutdown
  • /usr/local/redis/bin/redis-server /etc/redis.conf

造数据

  • 图片 28

执行flushall

  • 图片 29

拍卖备份文件

  • vim /usr/local/redis/appendonly.aof
  • 除去flushall的操作记录
  • 图片 30

重启数据库

  • /usr/local/redis/bin/redis-cli shutdown
  • /usr/local/redis/bin/redis-server /etc/redis.conf

检查数据

  • 图片 31 

相关文章