15min带你一览redis

 



 

   
若是转发,请注解博文来源: 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的注意事项:

决可是长

  • 最为不用越过1025个字节
  • 不但费用内部存储器,也默转潜移查找成效

毫不过短

  • 譬喻说设置为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最多援救14个数据,下标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的效能为缓存,不须要漫长化数据

TucsonDB与AOF同不常候利用

8.1 RDB持久化

优势

  • redis数据库仅饱含一个文书,对于文本备份是丰盛实惠的,借使系统出现祸殃时,较轻便恢复生机
  • 不幸复苏时,备份文件较为轻巧单独转移到别的部存款和储蓄器储介质
  • 数据量相当大的时候,运维速度快

劣势

  • 不可以预知保险数据无错过,数据遗失时间 = 当前时光-近些日子备份时间
  • 子进度完毕持久化职业,如若数据集相当大的时候,可能会导致短时间内redis所在服务器结束对外地劳工务

配置

  • 君越DB默许配置文件中就有,能够查看redis.conf文件中有关save的设置

    • 图片 25
      • save 900 1       :900秒内起码有1个数据变化,则进行漫长化
        • save 300 10    
          :300秒内最少有十三个数据产生变化,则开展持久化
        • save 60 一千0 :
          60秒内起码有1w个数据产生变化,则展开悠久化
      • 图片 26

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

8.2 AOF持久化

优势

更高的数额安全性

  • 每秒同步,最高错过1s数目
  • 每操作数同步,每便产生多少的转移都会立时记录到磁盘中,品质低于

append追Gavin件备份

  • 备份过程中冒出难题,不会破坏从前的日志备份
  • 要是写入了大要上数码,然后出现系奔溃的难题,在redis下二次运行在此之前,能够因此redis_check_aof工具解决数量一致性难点

举个例子日志备份过大

  • redis会自动运维日志重写机制,append进程中,会把备份数据写入到老的备份文件中,何况会用叁个新文件,记录此时期的修改数听别人讲话

AOF富含二个格式清晰的数量修改操作语句的日志文件

劣势

  • 同样数量的数额集文件,比景逸SUVDB的要打
  • AOF功能低于牧马人DB
  • 需求职员配备,非暗许配置

配置

在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 

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注