redis简记

本文深入探讨了Redis作为NoSQL数据库的特点,包括非SQL语法、键值存储结构和多样的数据类型。文章还对比了Redis与SQL数据库在事务支持和适用场景上的差异。在实践部分,详细介绍了Redis的安装、配置、命令操作,以及如何在Python环境中进行交互。此外,还讲解了Redis的主从配置和集群搭建,强调了其在读写分离和高可用性中的作用。
摘要由CSDN通过智能技术生成

nosql特点

  • 不支持sql语法
  • 存储结构与传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是kv形式
  • nosql的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景

nosql与sql数据库的比较

  • 适用场景不同,sql数据库市和用于关系特别复杂的数据查询场景,nosql反之
  • 事务特性的支持,sql对事务的支持非常完善,nosql基本上不支持事务

安装redis时报错

  • You need tcl 8.5 or newer in order to run the Redis test
  • 解决办法
    wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
    sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
    cd /usr/local/tcl8.6.1/unix/
    sudo ./configure
    sudo make
    sudo make install

启动服务端

  • 启动
  • sudo redis-server /etc/redis/redis.conf
  • 停止
  • sudo kill -9 pid(进程号)
  • 重启
  • sudo server redis restart
  • 查看进程
  • ps aux | grep redis

客户端

  • 客户端的命令为
    • redis-cli
  • 连接redis
    • redis-cli
  • 切换数据库
    • select n(0-15)

数据结构

  • redis是key-value的数据结构,每条数据都是一个键值对
  • 键的类型是字符串
  • 注意:键不能重复
  • 值的类型
    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset
      ####string类型
  • 保存-获取
  • 设置键值
    • set key value
    • get key
  • 设置键值以及过期时间,以秒为单位
    • setex key secondes value
  • 设置多个键值
    • mset key1 value1 key2 value2
    • mget key1 key2
  • 追加值
    • append key value

键命令

  • 查看所有键
    • keys *
  • 查看键是否存在
    • exists key
  • 查看键对应的value的类型
    • type key
  • 删除键以及对应的值
    • del key
  • 设置过期时间
    • expire key time
  • 查看有效时间
    • ttl key
      ####hash类型(值类型只能是string)
    • 设置单个属性
      • hset key field(属性)value
    • 设置多个属性(获取)
      • hmset key field1 value1 field2 value2
      • hmget key field1 field2
    • 查看键所有的属性
      • hkeys key
    • 获取一个属性的值
      • hget key field
    • 获取所有属性的值
      • hvals key
    • 删除属性,属性对应的值会一起删除
      • hdel key field1 field2
        ####list类型(值类型是string)
  • 在左侧插入数据
    • lpush key value1
  • 在右侧插入数据
    • rpush key value1
  • 在指定元素的前或后插入新元素
    • linsert key before或after 现有元素 新元素
  • 获取所有元素
    • lrange key 0 -1
  • 修改指定元素的值
    • lset key index(索引) value
  • 删除
    • lrem key count value
      ####set类型(无序)(值类型是string)
  • 添加元素
    • sadd key1 value1 value2
  • 返回所有元素
    • smembers key
  • 删除元素
    • srem key
      ####zset类型(有序)(值类型是string)
  • 添加
    • zadd key score1(权重) member1
  • 获取
    • zrange key start stop
  • 返回score值在min和max之间的成员
    • zrangebyscore min max
  • 查看成员member的score值
    • zscore key member
      -删除指定成员
    • zrem key member1
  • 删除score在指定范围的元素
    • zremrangebyscore key min max
redis命令文档
  • http://doc.redisfans.com/

pycharm连接redis数据库

  • 设置redis存储session信息
    - SESSION_ENGINE = ‘redis_sessions.session’
  • 连接redis
    - SESSION_REDIS = {
    ‘host’:‘localhost’,主机ip
    ‘port’: ‘6379’,端口号
    ‘db’: 2,redis哪个数据库
    ‘password’: ‘’,
    ‘prefix’: 'session’前缀
    }

redis主从配置

  • 复制redis.conf文件为slave.conf
    • sudo cp redis.conf slave.conf
  • 修改配置文件
    • 端口号port:6378
    • 添加slaveof 192.168.xx.xxx 6379
  • 查看主从关系
    • 主关系redis-cli -h 192.168.xx.xxx info Replication
    • 从关系redis-cli -h 192.168.xx.xxx -p 6378 info Replication
  • 启动主从redis
    • 主sudo redis-server /etc/redis/redis.conf
    • 从sudo redis-server /etc/redis/slave.conf
  • 一个master可以有多个slave,一个slave也可以有多个slave
  • 主master用来写数据,slave用来读取数据 slave备份master
  • 通过主从配置实现读写分离
  • master和slave都是一个redis实例(redis服务)

集群

  • 一组通过网络连接的计算机,共同对外提供服务,像一个独立的服务器。提高一个对外处理的能力
    ###redis集群
  • 软件层面
  • 硬件层面
    • 软件层面:只有一台电脑,在这个电脑上启动了多个redis服务
    • 硬件层面:存在多台实体的电脑,每台电脑上都启动了一个或者多个redis服务

配置集群

一台电脑
  • 在文件夹中创建conf目录
    • 在conf目录下创建文件7000.conf,7001.conf,7002.conf
    • 使用配置文件启动redis服务
      • sudo redis-server ./7000.conf
      • sudo redis-server ./7001.conf
      • sudo redis-server ./7002.conf
  • 复制命令
    • sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
  • 安装ruby环境,因为rendis-trib.rb是用ruby开发的
    • sudo apt install ruby
  • 运行命令创建集群
    • redis-trib.rb create --replicas 1 xx.xx.xx.xx:7000~~xx.xx.xx.xx:7005
  • 运行出错,查看ruby是否是最新版gem source -l
另一台电脑
  • 在文件夹中创建conf目录
    • 在conf目录下创建文件7003.conf,7004.conf,7005.conf
    • 使用配置文件启动redis服务
      • sudo redis-server ./7003.conf
      • sudo redis-server ./7004.conf
      • sudo redis-server ./7005.conf
数据验证
  • 连接到7002节点
    - redis-cli-h xx.xx.xx.xxx -c -p 7002
  • redis cluster默认分配了16348个slot(槽)
  • 用CRC16算法来获取数据应该存到哪个主节点上,算法为 CRC16(key)%16384
  • 必须要3个以上的主节点,否则创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,·整个集群就无法提供服务
集群与python交互
  • 安装包
    - pip install redis-py-cluster
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值