redis基础

NoSQL(not only sql):是以key-value形式存储,具有:非关系型、分布式、开源、水平可扩展等特点


NoSQL适用场景:
1.对数据高并发读写(尤其是上万次的写操作)
2.对海量数据的高效率存储和访问(表数据千万级以上)
3.对数据的高可扩展性和高可用性(数据库系统升级需要停机维护和数据迁移,Nosql可以做分步式来解决。扩展扩展迭代的时候不用修改表结构数据等)

Redis是一个开源的,key-value存储的NoSQL数据库,通常被称为数据结构服务器,支持各种不同方式的排序,为了保证效率数据都是缓存在内存中,还可以周期性把更新的数据写入磁盘。为了加快查询效率、减少和数据库连接次数,我们都会在代码中加入缓存功能,还能解决分布式系统集群时数据库共享问题。


Redis适用场合:
1.取最新N个数据的操作
2.排行榜应用,取TOP N操作
3.需要精确设定过期时间的应用(可以对键设置有效期)
4.计数器应用
5.Uniq操作,获取某段时间所有数据排重值
6.实时系统,反垃圾系统
7.Pub/Sub构建实时消息系统
8.构建队列系统
9.缓存


Redis的安装和部署:


一、下载安装包
    https://redis.io/download
二、编译安装
   tar zxvf redis-3.0.4.tar.gz
   cd redis-3.0.4
   make
   cd src 
   make install
   
三、移动文件,便于管理
   在redis-3.0.4同级mkdir bin,mkdir etc,mkdir logs三个目录
   mv /redis-3.0.4/redis.conf /etc
   cd /redis-3.0.4/src
   mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /bin


四、启动服务
  修改redis.conf中的daemonize属性为yes可以默认后台启动(默认为no)
  ./redis-server /shb/redis/etc/redis.conf   来启动
  ps -ef|grep redis 查看redis进程是否启动成功
  netstat -tunpl|grep 6379 查看6379端口是否被redis使用( Redis默认端口:6379)


Redis配置文件
daemonize 需要在后台运行,把该项改为yes
pidfile 配置多个pid的地址默认在 /var/run/redis.pid
bind 绑定ip,设置后只接受来自该ip的请求
port 监听端口,默认为6379
timeout 设置客户端连接超时时间,单位秒
loglevel 日志级别,debug、verbose、notice、warning
logfile 配置log文件地址
databases 设置数据库的个数,默认使用的数据库为0
save 设置redis进行数据库镜像的频率-备份数据
Slaveof 设置数据库为其他数据库的从数据库
Masterauth 主数据库连接需要的密码验证
Requirepass 设置登录时需要使用的密码
Maxclients 限制同时连接的客户数量
Maxmemory 设置redis能使用的最大内存


五、关闭服务
  pkill redis-server
  bin下面执行./redis-cli 进入客户端
  ./redis-cli shutdown  关闭客户端


Redis的数据类型


一、String类型及常用操作   string类型是二进制安全的,可以包含任何数据,比如jpg图片或者可序列化的对象


    set       设置key对应的值为value                set  name  bobo
    get       根据key名称取值                       get name
    setnx     设置key对应的值为value,如果key已经存在返回0,不修改原有value值,不存在可以设置成功
    setex     设置key对应的值为value,并制定此键值对应的有效期      set name 10 bobo   -设置有效期为10秒
    setrange  设置指定key的value值的子字符串    setrange name 2 duoduo -设置从第二个字符开始替换为duoduo
    mset      一次设置多个key的值,成功返回ok,失败返回0    set  name bobo  age 18
    mget      一次获取多个值
    getset    设置新值,获取旧值
    append    给指定key的字符串追加value
    strlen    取指定key的value值的长度


二、hashes类型及常用操作  hash是一个string类型的filed和value的映射表,hash适合存储对象
    
    hset    设置hash field为指定值,key不存在先创建     hset user:001 name bobo -user:001可以看成一张表
    hget    取hash field 对应的值                       hget user:001 name 返回是bobo
    hkeys   返回hash的所有字段                          hkeys user:001
    hvals   返回hash的所有value                         hvals user:001
    hgetall 获取某个hash中全部的field及value

    
三、lists类型及常用操作   list是一个链表结构


    lpush    在key对应的list的头部添加字符串元素              lpush  mylist  "hello"
    lrange   从头部取list的值                                 lrange mylist 0 -1
    rpush    在key对应的list的尾部添加字符串元素 
    linsert  在key对应的list的特定位置前或后添加字符串元素    linsert mylist before "world"  "hello"
    lset     设置list中指定下标的的元素值


四、set类型及其操作    set是一个集合,string类型的无序集合


    sadd      向名称为key的set中添加元素       sadd myset "hello"
    srem      删除名称为key的set中的元素       srem myset "hello"
    smembers  查看set中的元素                  smembers myset


Redis客户端的常用命令


keys    返回满足给定pattern的所有key     keys *
exists  确认一个key是否存在              exists  name       -返回1表示存在,0表示不存在
del     删除                             del name           -返回1表示删除成功,0表示删除失败(不存在)
        expire  设置一个key的过期时间            expire name 10     -通过ttl name可以查看还有多久过期
        persist 取消过期时间                     persist name
        select  选择数据库                       select 0           -选择第一个数据库,Redis最多可以select 15(总共16个数据库)
        move    移动数据库                       move  name  1      -把之前0数据库的中的name移动到1数据库   
        rename  重命名key                        rename myset hisset
        type    返回键的类型                     type name          -返回的是string


  服务器相关命令
       ping     测试连接是否存活
       quit     退出客户端连接
       dbsize   返回当前数据库中key的数目
       info     获取服务器信息                  -redis版本,虚拟内存等
       flushdb  删除当前选择数据库中的所有key
       flushall 删除所有数据库中的所有key


Redis高级实用特性


一、安全性
 1.设置客户端连接后进行任何其他指定前需要使用的密码
 
 vi /etc/redis.conf
 在redis配置文件中增加requirepass bobo,重启redis才能生效
 再连接客户端执行命令时提示需要授权   auth  bobo,授权后可以执行命令
 也可以连接客户端的时候就授权   ./redis-cli -a bobo


二、主从复制
  
  Redis通过主从复制可以允许多个从服务器(slave server)拥有和主服务器(master server)相同的数据库副本
 
  Redis主从复制特点
  1.Master可以用用多个slave
  2.多个slave可以连接同一个master以外,还可以连接到其他slave
  3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
  4.提高系统的伸缩性


  配置主从服务器:在从服务器上的配置文件中加入
  slaveof 192.168.1.1 6379      -指定主机的ip和端口
  masterauth bobo               -如果主机由密码需要打开主机密码


三、事务处理

  Redis对事务的支持还比较简单目前,只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他的client命令。

  multi     -打开一个事务上下文
  exec      -执行命令
  discard   -取消前面所有命令,即事务回滚


四、持久化机制


    Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。Redis支持两种持久化方式:


1.snapshotting(快照)也是默认方式:将内存中数据以快照形式写入二进制文件中,默认文件名为dump.rdb。可以通过配置设置     自动做快照持久化的方式,配置redis在n秒内如果超过m个key被修改就自动快照


修改redis.conf,增加:
save 900 1
save 300 10
save 60 10000


2.Append-only-file(aof)方式:由于快照方式是在一定间隔时间做一次的,如果redis意外down掉就会丢失最后一次快照后的所    有修改。aof比快照方式有更好的持久性,redis会将每一个收到的写命令都通过write函数追加到文件中,redis重启时会通过重新      执行文件中保存的写命令来在内存中重建整个数据库的内容。


修改redis.conf:
appendonly yes   -启用aof持久化方式(默认是no,改成yes)
appendfsync everysec


在bin下面会生成一个appendonly.aof文件(操作)



五、发布订阅消息


    发布订阅(pub/sub)是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合。订阅者可以通过subscribe     和psubscribe命令向redis server订阅自己感兴趣的消息类型。发布者通过publish命令向redis server发送特定类型的消息时,订    阅该信息类型的全部client都会收到此消息。


六、虚拟内存使用


    Redis的虚拟内存就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。
 

    vm-enabled yes                              -开启vm功能
    vm-swap-file /tmp/redis.swap                -交换出来的value保存的文件路径
    vm-max-memory 1000000                       -redis使用的最大内存上限
    vm-page-size 32                             -每个页面的大小32字节
    vm-pages 134217728                          -最多使用多少页面
    vm-max-threads 4                            -用于执行value对象的工作线程数量
    really-use-vm yes                           -是否使用vm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习Redis基础知识,可以按照以下思路进行学习: 1. 了解Redis的概念和特点:首先需要了解Redis是什么,它的主要特点是什么,它为什么被广泛应用于缓存、消息队列、会话管理等场景。 2. 安装和配置Redis:根据你的操作系统,安装Redis并进行相关配置。可以参考Redis官方文档或其他教程来完成这一步。 3. 学习Redis的数据结构:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。了解每种数据结构的特点、用途和操作命令,并通过实际操作来加深理解。 4. 掌握Redis的常用命令:学习Redis的常用命令,如get、set、hget、hset、lpush、lrange、sadd、smembers等,了解每个命令的具体用法和参数含义。 5. 理解Redis的持久化机制:了解Redis的RDB和AOF两种持久化方式,以及它们的优缺点。学习如何进行备份和恢复数据。 6. 学习Redis的事务和Lua脚本:了解Redis事务的基本概念和使用方法,以及如何使用Lua脚本来进行复杂的操作。 7. 深入了解Redis的性能优化和高可用方案:学习如何优化Redis的性能,包括配置调优、使用合适的数据结构、合理地使用缓存等。同时了解Redis的高可用方案,如主从复制、哨兵模式和集群模式。 8. 学习Redis与其他技术的结合:了解Redis如何与其他技术进行结合,如与Python、Java等编程语言的配合使用,以及与Spring、Django等框架的整合。 以上是学习Redis基础知识的一个思路,你可以根据自己的实际情况和需求进行学习和拓展。推荐参考一些经典的Redis教程和实战案例,通过实际操作和项目实践来提升自己的技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值