reids_reids实战 - CSDN
精华内容
参与话题
  • Redis入门到项目实战视频教程

    千人学习 2019-01-22 13:17:17
    Redis入门到项目实战视频培训教程,除了redis安装、缓存、集群、命令等内容,本套课程精选了redis在实际项目中的十几个应用场景。通过本课程的学习,可以让学员掌握redis在实际项目中如何应用。redis是基于内存的key...
  • redis持久化存储(一)

    万次阅读 2019-05-26 20:35:48
    redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像,但是redis支持的数据存储类型比memcached更丰富,包括strings(字符...

    redis概述
    REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像,但是redis支持的数据存储类型比memcached更丰富,包括strings(字符串),lists(列表),sets(集合)和sorted sets(有序集合)等。
    这些数据类型支持push/pop,add/remove及取交集,并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务。和memcached不同的是,redis持久化缓存服务还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是,redis还支持master-slave(主从)同步,这点很类似关系型数据库MySQL主从复制功能。
    Redis是一个开源的使用C语言编写(3万多行代码),支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
    Redis软件的出现,再一定程度上弥补了memcached这类key-value内存缓存服务的不足,在部分场合可以对关系数据库起到很好的补充作用。redis提供了Python,Ruby,Erlang,PHP客户端,

    1.2 redis特点

    key-value键值类型存储
    支持数据可靠存储及落地
    单进程单线程高性能服务器
    crash safe & recovery slow
    单机qps可以达到10W
    适合小数据量高速读写访问
    

    1.3 Redis优点

    与memcached不同,Redis可以持久化存储数据 性能很高:Redis能支持超过10W每秒的读写频率。
    丰富的数据类型:Redis支持二进制的Strings,Lists,Hashes,Sets及sorted Sets等数据类型操作
    原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行
    丰富的特性:Redis还支持publish/subscribe(发布/订阅),通知,key过期等等特性。 redis支持异机主从复制。

    1.4 redis缺陷与陷阱
    系统运行有毛刺
    不同命令延迟差别极大
    内存管理开销大(设置低于物理内存3/5)
    buffer io造成系统OOM(内存溢出)

    1.5 redis的数据类型
    作为Key-value型存储系统数据库,Redis提供了键(Key)和值(value)映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一,下面为最为常用的数据类型:

    String 字符串
    Hash 哈希表
    List 列表
    Set 集合
    Sorted set 有序集合
    

    1.6 redis 持久化

    通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用快照(snapshot)的方式,将内存中的数据不断写入磁盘,或使用类似MySQL的binlog日志(aof但并不用于主从同步)方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。

    1.7 redis应用场景
    redis的最佳应用场景

    • Redis最佳试用场景是全部数据in-memory
    • Redis更多场景是作为Memcached的替代品来使用。
    • 数据比较重要,对数据一致性有一定要求的业务。
    • 当需要除key/value之外的更多数据类型支持时,使用Redis更合适。
    • 需要提供主从同步以及负载均衡分布式应用场景(redis主从同步)

    1.8redis生产上的教训

    一定要进行Master-slave主从同步配置,在出现服务故障时可以切换

    在master禁用数据持久化,只需要在slave上配置数据持久化

    物理内存+虚拟内存不足,这个时候dump一直死着,时间久了机器挂掉。这个情况就是灾难!

    当Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了,就开始做swap,内存碎片大

    当达到最大内存时,会清空带有过期时间的key,即使key未到过期时间。

    redis与DB同步写的问题,先写DB,后写redis,因为写内存基本上没有问题。

    快速部署一个redis环境
    2.1 Redis部署环境搭建

    主机名	eth0	用途
    Master-redis01	10.0.0.135	主Redis
    Slave-redis02	10.0.0.136	从Redis
    

    2.2 开始安装redis服务
    在redis的官方网站(http://www.redis.io)下载最新的稳定版本redis。

    wget -q http://download.redis.io/releases/redis-2.8.9.tar.gz

    #在redis01和redis02都执行如下操作

    [root@redis01 ~]# tar xf redis-2.8.9.tar -C /usr/src/
    [root@redis01 ~]# cd /usr/src/redis-2.8.9/
    [root@redis01 redis-2.8.9]# make MALLOC=jemalloc
    [root@redis01 redis-2.8.9]# make PREFIX=/usr/local/redis install
    [root@redis01 redis-2.8.9]# LANG=en
    [root@redis01 redis-2.8.9]# tree /usr/local/redis/bin/
    /usr/local/redis/bin/
    ├── redis-benchmark
    ├── redis-check-aof
    ├── redis-check-dump
    ├── redis-cli
    └── redis-server
    
    0 directories, 5 files
    

    命令执行完成之后,会在/usr/local/redis/bin/目录下生成5个可执行文件,分别是:

    redis-server,redis-cli,redis-benchmark,redis-check-aof,redis-check-dump
    

    它们的作用如下:

    redis-server    #Redis服务器的daemon启动程序
    redis-cli       #Redis命令操作工具。当然,你也可以用telnet根据其纯文本协议来操作
    redis-benchmark #Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
    redis-check-aof #对更新日志appendonly.aof检查,是否可用,类似检查mysql binlog的工具
    redis-check-dump    #用于本地数据库rdb文件的检查
    

    2.3 配置并启动redis服务
    (1)配置启动命令

    操作过程:

    [root@redis01 redis-2.8.9]# ln -s /usr/local/redis/bin/* /usr/local/bin/
    (2)查看命令帮助:

    [root@redis01 redis-2.8.9]# redis-server -h
    Usage: ./redis-server [/path/to/redis.conf] [options]
           ./redis-server - (read config from stdin)
           ./redis-server -v or --version
           ./redis-server -h or --help
           ./redis-server --test-memory <megabytes>
    
    Examples:
           ./redis-server (run the server with default conf)
           ./redis-server /etc/redis/6379.conf
           ./redis-server --port 7777
           ./redis-server --port 7777 --slaveof 127.0.0.1 8888
           ./redis-server /etc/myredis.conf --loglevel verbose
    
    Sentinel mode:
           ./redis-server /etc/sentinel.conf --sentinel
    

    (3)启动redis服务

    操作过程:

    #从源程序目录复制redis.conf到程序安装目录下

    [root@redis01 redis-2.8.9]# cd /usr/src/redis-2.8.9/
    [root@redis01 redis-2.8.9]# pwd
    /usr/src/redis-2.8.9
    [root@redis01 redis-2.8.9]# mkdir /usr/local/redis/conf
    [root@redis01 redis-2.8.9]# cp redis.conf /usr/local/redis/conf/
    

    #启动redis服务

    [root@redis01 redis-2.8.9]# redis-server /usr/local/redis/conf/redis.conf &
    

    #查看redis进程启动情况

    [root@redis01 redis-2.8.9]# ps -ef | grep redis | grep -v grep
    root       3169   1288  0 10:17 pts/0    00:00:00 redis-server *:6379    
    

    特别提示:

    redis启动成功后,在最后会出现如下警示信息:

    [3169] 02 Oct 10:17:30.689 # Server started, Redis version 2.8.9
    [3169] 02 Oct 10:17:30.690 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    [3169] 02 Oct 10:17:30.690 * The server is now ready to accept connections on port 6379
    

    #警示大概意思为:
    overcommit_memory被设置为了0.如果内存不够的情况下后台保存可能会失败;要解决这个问题,需要在/etc/sysctl.conf配置文件中将vm.overcommit_memory设置为1;或者通过命令“sysctl vm.overcommit_memory=1”来修改。
    因此,我们做一下处理后在启动redis进程

    [root@redis01 redis-2.8.9]# pkill redis
    [root@redis01 redis-2.8.9]# sysctl vm.overcommit_memory=1
    vm.overcommit_memory = 1
    [root@redis01 redis-2.8.9]# redis-server /usr/local/redis/conf/redis.conf &
    

    经过处理后,再启动redis就没有任何警告了。
    vm.overcommit_memory参数说明:
    根据内核文档,该参数有三个值,分别是:
    0:当用户空间请求更多的内存时,内核尝试估算出剩余可用的内存。
    1:当设这个参数值为1时,内核允许超量使用内存直到用完为止,主要用于科学计算
    2:当设这个参数值为2时,内核会使用一个绝不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。

    测试关闭redis服务的命令

    redis-cli shutdown 关闭redis进程

    [root@redis01 redis-2.8.9]# ps -ef | grep redis | grep -v grep
    root       3200   1288  0 10:38 pts/0    00:00:08 redis-server *:6379                          
    [root@redis01 redis-2.8.9]# redis-cli shutdown
    [3200] 02 Oct 12:43:46.621 # User requested shutdown...
    [3200] 02 Oct 12:43:46.621 * Saving the final RDB snapshot before exiting.
    [3200] 02 Oct 12:43:46.630 * DB saved on disk
    [3200] 02 Oct 12:43:46.631 # Redis is now ready to exit, bye bye...
    [1]+  Done                    redis-server /usr/local/redis/conf/redis.conf
    [root@redis01 redis-2.8.9]# ps -ef | grep redis | grep -v grep
    [root@redis01 redis-2.8.9]# redis-server /usr/local/redis/conf/redis.conf  
    

    redis自启动脚本

    [root@ser02 redis]# vim redserver.sh
    #!/bin/bash
    stop(){
    /data/redis/bin/redis-cli -a redis shutdown
    }
    start(){
    /data/redis/bin/redis-server /data/redis/conf/redis.conf &
    }
    conn(){
    /data/redis/bin/redis-cli -a redis
    }
    case $1 in
       start)
       start
       ;;
       stop)
       stop
       ;;
       restart)
       stop
       start
       ;;
       conn)
       conn
       ;;
       *)
       echo "Usage:$0 (start|stop|restart)"
    esac
    [root@ser02 redis]# chmod +x redserver.sh 
    [root@ser02 redis]# vim /etc/profile
    export PATH=/data/redis/:$PATH
    [root@ser02 redis]# source /etc/profile
    
    redserver.sh  start ##开启redis服务
    

    redserver.sh conn ##登录redis
    2.4 通过客户端操作redis数据库
    下面我们来简单操作一下数据库。
    插入数据:设置一个key-value对

    [root@redis01 redis-2.8.9]# redis-cli   #通过客户端连接本地redis 
    127.0.0.1:6379> set id 001  #写入一条数据key(id),value(001)
    OK
    127.0.0.1:6379> get id  #取值key(id)
    "001"   #显示key对应的值
    127.0.0.1:6379> del id  #删除key(id)
    (integer) 1     #1表示成功
    127.0.0.1:6379> exists id   #验证key是否存在
    (integer) 0     #0表示不存在
    127.0.0.1:6379> get id  #取key的值
    (nil)           #报错信息
    127.0.0.1:6379> set user001 benet
    OK
    127.0.0.1:6379> set user002 yunjisuan
    OK
    127.0.0.1:6379> set user003 yun123
    OK
    127.0.0.1:6379> get user001
    "benet"
    127.0.0.1:6379> get user002
    "yunjisuan"
    127.0.0.1:6379> keys *  #查看redis里所有的key
    1) "user003"
    2) "user002"
    3) "user001"
    

    更多操作方式及命令帮助

    (1)redis数据库的表模式

    127.0.0.1:6379> keys *  #查看所有key
    1) "user003"
    2) "user002"
    3) "user001"
    127.0.0.1:6379> select 1    #切换到表1模式
    OK
    127.0.0.1:6379[1]> keys *   #查询所有key
    (empty list or set)     #什么都没有
    127.0.0.1:6379[1]> set name wangwu  #写入一个key-value对
    OK
    127.0.0.1:6379[1]> keys *   #查看所有key
    1) "name"           #key(name)已经有了
    127.0.0.1:6379[1]> get name #查看key(name)的值
    "wangwu"
    127.0.0.1:6379[1]> select 0 #切换回表0模式(初始模式)
    OK
    127.0.0.1:6379> keys *      #查看所有key
    1) "user003"
    2) "user002"
    3) "user001"
    

    (2)redis-cli客户端的远程连接及非交互式操作数据库

    [root@redis01 redis-2.8.9]# redis-cli -h 10.0.0.135 -p 6379
    10.0.0.135:6379> quit
    [root@redis01 redis-2.8.9]# redis-cli -h 10.0.0.135 -p 6379 set aaa 111
    OK
    [root@redis01 redis-2.8.9]# redis-cli -h 10.0.0.135 -p 6379 get aaa
    "111"
    

    redis安全
    (1)为redis客户端设置外部链接密码

    警告:
    因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在1秒内进行上万次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
    设置密码:

    [root@ser02 bin]# vim /data/redis/conf/redis.conf 
     requirepass redis
    

    (2)将危险的命令改名
    rename-command set “sset” #将set改名为sset

    为php安装redis客户端扩展
    (1)获取源码包

    wget https://github.com/nicolasff/phpredis/archive/master.zip
    

    (2)安装

    [root@redis01 ~]# ls -l phpredis-master.tar.gz 
    -rw-r--r--. 1 root root 164509 Oct  2 19:23 phpredis-master.tar.gz
    [root@redis01 ~]# tar xf phpredis-master.tar.gz -C /usr/src/
    [root@redis01 ~]# cd /usr/src/phpredis-master/
    [root@redis01 phpredis-master]# /usr/local/php/bin/phpize
    [root@redis01 phpredis-master]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@redis01 phpredis-master]# make && make install
    
    vim /etc/php.ini
    	extensions = /usr/lib64/php/modules/redis.so
    	[root@ser02 modules]# systemctl restart httpd
    

    测试:

    [root@ser02 redis]# cd /var/www/html/
    	[root@ser02 html]# vim 1.php 
    	<?php
      	$redis = new Redis();
      	$redis -> connect("192.168.25.151",4423);
      	$redis -> auth("redis");
      	$redis -> set("name","anliu");
      	$var = $redis -> get("name");
     	echo "$var";
    	?>
    	[root@ser02 html]# systemctl restart httpd
    
    	
    	[root@ser02 html]# php 1.php 
    	anliu
    

    安装Python redis客户端操作redis

    wget https://pypi.python.org/packages/source/r/redis/redis-2.10.1.tar.gz
    tar xf redis-2.10.1.tar.gz
    cd redis-2.10.1
    python setup.py install
    

    开发python程序操作redis

    在操作前请将之前redis配置文件里修改的redis命令注释掉,否则报错

    [root@redis01 redis-2.10.1]# python
    Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import redis        #引用redis支持库
    >>> r = redis.Redis(host='10.0.0.135',port='6379',password='yunjisuan') #建立redis数据库的连接对象(面向对象方式)
    >>> r.set('name','benet')   #操作对象调用set方法写入数据
    True
    >>> r.get('name')           #操作对象调用get方式读取数据
    'benet'
    >>> r.dbsize()              #操作对象查看redis数据库的数据条数
    1L
    >>> r.keys()                #查看所有的key
    ['name']
    >>> exit()                  #退出
    

    2.11 通过Web界面连接Python程序展示redis
    开发Python脚本

    [root@redis01 scripts]# cat python-redis.py 
    #/usr/bin/python
    
    from wsgiref.simple_server import make_server
    import redis
    
    def get_redis():
        r = redis.Redis(host='10.0.0.135',port='6379',password='yunjisuan',db=0)
        r.set('name','yunyunyun')
        return r.get('name')
        
    def hello_world_app(environ,start_response):
        status = '200 OK'   #HTTP Status
        headers = [('Content-type','text/plain')]   #HTTP Headers
        start_response(status,headers)
        
        # The returned object is going to be printed
        return get_redis()
    
    httpd = make_server('',8000,hello_world_app)
    print "Serving on port 8000..."
    
    # Server until process is killed
    httpd.serve_forever()
    

    启动python脚本

    注意关闭iptables
    
    [root@redis01 scripts]# python python-redis.py 
    Serving on port 8000...     #监听8000端口
    

    在这里插入图片描述

    展开全文
  • reids

    2019-10-06 18:34:41
    NoSql优点:  1.对数据库高并发读写需求  2.对海量数据的高效率存储和访问  3.对数据库的高扩展性和高可用性的需求 2 主要的NoSql数据库分类:  1.键值存储数据库(存的是键值对) 优点:快速查询 ...

    NoSql优点:
      1.对数据库高并发读写需求
      2.对海量数据的高效率存储和访问
      3.对数据库的高扩展性和高可用性的需求

    2 主要的NoSql数据库分类:
      1.键值存储数据库(存的是键值对)
        优点:快速查询 缺点:存储的数据缺少结构化

      2.列存储数据库(以列簇式存储,将同一列数据存在一起)
        优点:查找速度快,可扩展性强,更容易进行分布式扩展
        缺点:功能相对局限

      3.文档型数据库(一系列键值对):
        优点:数据结构要求不严格
        缺点:查询性能不高,而且缺乏统一的查询语法

      4.图形数据库(图结构)
        优点:利用图结构相关算法
        缺点:需要对整个图做技术,不容易做分布式的集群方案

    3
      redis是一个开源的使用c语言编写的 key-value数据库,并提供多种语言的AIP

      redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并在此基础上实现了master-alave(主从)同步

      主从同步:数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器

    4

      设置键:set myKey 值; 得到键 get myKey

      redis的配置文件在redis的安装目录下的redis.conf文件中

      可以使用 CONFIG GET * 得到所有的配置项 也可以使用 CONFIG GET "配置名" 得到配置信息

      使用 CONFIG SET 配置名 “值”来修改配置

      指定Redis监听端口,默认端口为6379

      redis有时会产生中文乱码:redis-cli --raw 可以避免中文乱码

    5 基础命令

      1.del key(删除key)

      2.dump key 序列化指定的key 并返回被序列化的值

      3.exists key 检查key是否存在

      4.设置多个键值对 mset key value [key value ..]

      5.订阅模式:当有消息发给主机时,主机会同步把消息转给他的子机

      创建订阅者: SUBSCRIBE 订阅频道名

      订阅一组频道:psubscribe 频道号*

      6.redis 开启事物:multi 开头 以 exec 命令结尾 执行multi 和exec所有的命令 discard 回滚事物

        单个redis命令的执行是原子性的,但redis没有在事物上增加任何维持原子性的机制

        所以redis事物执行并不是原子性的,中间某条指令的失败不会导致前面的命令回滚,也不会造成后续的指令不执行

      7.redis数据备份和恢复:
        备份:save 该命令会在redis的安装目录中创建dump.rdb文件

        恢复数据:恢复数据只需要将备份文件dump.rdb移动到redis安装目录并启动服务即可

        config get dir 命令得到redis的安装目录


    6 redis持久化:
        redis提供了两套持久化机制
        1.RDB(快照机制 直接恢复快照(默认)):优点:恢复快 缺点:数据容易丢失

        2.AOF(日志机制 将我们的每一个记录行命令 记到一个日志文件中 在启动的时候 将命令重新执行一次):优点:数据保持完整 缺点:恢复的慢 文件太大


    7 redis分区

      优点:1.通过利用多台计算机内存的和值,允许我们构造更大的数据库

         2.通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽

      缺点:1.涉及多个key的操作通常是不被支持的:就是当2个set映射到不同的redis上就不能对这两个set执行交集操作

         2.涉及多个key的redis事物不能使用

         3.使用分区时数据处理较为复杂


      分区类型:
        1.范围分区


        2.哈希分区


    8 java使用redis:

        1.链接本地redis

          Jedis jedis=new Jedis("localhost");

        2.查看服务是否运行

            syso(jedis.ping());

        3.设置redis字符串

          jedis.set("键","值");

        4.获取数据 通过键得到值

          jedis.get("键");

        3.设置list存储

          jedis.lpush("集合名","值");

        4.获得存储的值

          List<String>list=jedis.lrange("集合名",开始的位置,结束的位置)//会截到这个集合这个范围的值

        4.返回set集合
          jedis.keys("*")

    转载于:https://www.cnblogs.com/HQ0422/p/10719254.html

    展开全文
  • Reids是什么

    2018-03-26 15:00:33
    Redis是Remote Dictionary Server (远程数据服务)的缩写,由意大利人antirez(Salvatore Sanfilippo)开发的一款内存高速缓存数据库。Redis还是一个开源的、基于Key-Value方式的存储数据系统。它支持丰富的数据...

    RedisRemote Dictionary Server 远程数据服务)的缩写,由意大利人antirezSalvatore Sanfilippo)开发的一款内存高速缓存数据库

    Redis还是一个开源的、基于Key-Value方式的存储数据系统。

    它支持丰富的数据类型(结构),比如:String(字符串)、Hash(哈希)、List(列表)、Sets(集合)和Sorted Sets(有序集合)等类型。

    可持久化(随时把数据备份到硬盘中),保证数据安全。

    Redis也通常被称为数据结构服务器

     

    官  网:http://www.redis.io

    中文官网:http://www.redis.cn

     

    数据缓存:

    Web开发的时候,如果有一些数据在短时间内不会发生变化,而它们还要被频繁的访问,为了提高用户的请求速度和降低网站的负载,就把这些数据放到一个读取速度更快的介质上(或者是通过较少的计算量就可以获得该数据),该行为就称作对该数据的缓存。

    该介质可以是文件、数据库、内存。

    内存介质经常用于数据缓存。

     

    Redis缓存案例:

    同一个select查询SQL语句,每天需要被执行查询100万次,并且每次查询获得的数据还是一样的。为了减轻数据库的负载,就把查询好的数据给缓存起来(存储在内存中),第一个用户执行Select查询时从数据库中获得数据并存储到内存中,第二个到第100万个用户查询就直接从内存中获得数据。

     

    使用缓存减轻数据库的负载。数据库是整个网站资源的“瓶颈”。

     

    缓存的两种形式:

    1)网页缓存经常用在CMSContent Manage System)内容管理系统中(Smarty缓存)

    不发生变化的新闻信息页面适合做“页面缓存”,每个用户就从一个静态页面访问该新闻即可。

     

    2)数据缓存经常会用在页面的具体数据中使用

    京东网站的一个页面从业务上看,数据有分类(推广商品、商品精选、普通商品),这些商品从数据读取出来,为了降低数据库负载,可以给它们设置三个数据缓存,这样独立更新、独立读取。

    展开全文
  • Redis入门指南(第2版)》是一本Redis的入门指导书籍,以通俗易懂的方式介绍了Redis基础与实践方面的知识,包括历史与特性、在开发和生产环境中部署运行Redis、数据类型与命令、使用Redis实现队列、事务、复制、...
  • Reids简介及安装

    2020-09-15 10:01:20
    什么是Redis? Redis 是开源免费的,遵守BSD协议,是一个高性能的key-value非关系型数据库。 作为数据库,Redis是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与5种不同类型的值...

    什么是Redis?

    Redis 是开源免费的,遵守BSD协议,是一个高性能的key-value非关系型数据库。
    作为数据库,Redis是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与5种不同类型的值(Value)之间的映射(Mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

    作为缓存中间件,相比 Memcached,Redis支持更多的数据结构和更丰富的数据操作,另外Redis有着丰富的集群方案和使用场景。



    什么是Redis?优势有哪些

    • 使用redis有哪些好处?
      (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是
      (2)支持丰富数据类型,支持string,list,set,sorted set,hash
      (3)支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
      (4)丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

    • redis相比memcached有哪些优势?
      (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
      (2) redis的速度比memcached快很多
      (3) redis可以持久化其数据

    • redis常见性能问题和解决方案:
      (1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
      (2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
      (3)为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
      (4) 尽量避免在压力很大的主库上增加从库
      (5)主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3…
      这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。

    • MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据 相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:
      voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
      volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
      volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
      allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
      allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
      no-enviction(驱逐):禁止驱逐数据

    • Memcache与Redis的区别都有哪些?
      1)、存储方式Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。
      2)、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。
      3),value大小 redis最大可以达到1GB,而memcache只有1MB

    redis 常见的性能问题都有哪些?如何解决?

    1).Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。
    2).Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化,如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。
    3).Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。
    4). Redis主从复制的性能问题,为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内



    一、Redis 安装

    Window 下安装Redis
    下载地址:https://github.com/MSOpenTech/redis/releases

    Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘,解压后,将文件夹重新命名为 redis。
    在这里插入图片描述
    打开文件夹,内容如下:
    在这里插入图片描述

    二、启动

    Ctrl+R启动一个 cmd 窗口 使用 cd 命令切换目录到 D:\redis 运行:
    在这里插入图片描述
    启动后显示下面界面,表示服务启动成功(注意,启动之后cmd窗口不能关闭,不然服务会关闭)
    redis-server.exe redis.windows-service.conf
    在这里插入图片描述

    三、连接

    Ctrl+R再启动一个cmd窗口
    使用cd命令切换到 D:\ redis下运行:
    无密码连接::redis-cli.exe -h 127.0.0.1 -p 6379
    有密码连接:redis-cli.exe -h 127.0.0.1 -p 6379 -a xxxx -a 密码
    根据自己的实际情况选择,输入之后回车,显示以下界面表示连接成功
    在这里插入图片描述

    四,redis本地服务

    redis可以向本地服务一样打开,或者说开机启动服务,在D:\redis目录下使用这条命令
    redis-server --service-install redis.windows.conf --loglevel verbose
    就可以在任务管理器中打开服务
    在这里插入图片描述
    如果打开redis服务出现刚打开就关闭的情况参考一下步骤:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    根据以上步骤即可!!!

    展开全文
  • Redis常见问题总结【精华】

    千次阅读 2018-11-08 19:01:20
    1、为什么使用redis (一)性能 我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。 (二)并发 在大...
  • redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存、消息中间件。支持多种数据 结构,如字符串,散列,列表,集合,有序集合,。 redis持久化方式: RDB模式: 特点说明: 1,采用定期持久化...
  • 超强、超详细Redis入门教程

    万次阅读 多人点赞 2017-03-04 16:21:13
    这篇文章主要介绍了超强、超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 【本教程目录】 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis ...
  • redis全面解析

    万次阅读 多人点赞 2019-01-28 23:51:03
    什么是Redis? Redis 是开源免费的,遵守BSD协议,是一个高性能的key-value非关系型数据库。   redis单线程问题 所谓的单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有...
  • Reids的简介与安装

    2018-12-06 17:04:59
    1.Redis的简介 Redis完全开源免费的,遵守BSD协议,是一个高性能的key-value结构的数据库。Redis与其他的缓存产品相比有以下三个特点: 1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘上,重载的时候...
  • Redis 入门系列-redis-redis 是什么,redis 的优点 Redis 入门系列-redis-redis 和 memcached 的区别(总结) Redis 入门系列-redis-redis 配置命令行, redis 配置详解 Redis 入门系列-redis-redis 数据类型 字符串...
  • redis 入门指南 第2版 完整版 redis 入门指南 第2版 完整版 redis 入门指南 第2版 完整版
  • Redis入门指南第2版

    2020-05-27 23:30:17
    资源名称:Redis入门指南 第2版资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • Redis入门指南(第2版)完整版

    热门讨论 2020-07-30 23:32:12
    Redis入门指南(第2版)完整版
  • Redis入门指南 第2版.pdf
  • Redis入门指南+第2版.pdf ,高清完整带目录。李子骅编著
  • redis入门指南》是一本redis的入门指导书籍,以通俗易懂的方式介绍了redis基础与实践方面的知识,包括历史与特性、在开发和生产环境中部署运行redis、数据类型与命令、使用redis实现队列、事务、复制、管道、持久...
  • Redis入门指南(第2版)-李子骅在线阅读百度网盘下载(z793)书名:Redis入门指南(第2版)作者:李子骅格式:EPUB, HTMLZ, PDF路径:点击打开排序作者:李子骅排序书名:Redis入门指南(第2版)日期:08 12月 2018uuid:ed...
  • redis入门到精通.txt

    2020-07-23 23:32:04
    redis入门到精通
1 2 3 4 5 ... 20
收藏数 40,030
精华内容 16,012
关键字:

reids