redis基础操作及集群配置(python)

1 篇文章 0 订阅
1 篇文章 0 订阅

一、NoSQL

  • 非关系型数据库
  • 不支持sql语法
  • 存储数据以key-value形式存在

二、redis特性及优势

  1. 特性
  • 支持数据持久化,可以将内存中的数据保存到磁盘,重启后再次加载使用
  • 除key-value类型数据,还提供list,set,zset,hash
  • 支持数据备份,主从模式的数据备份
  1. 优势
  • 高性能-读速度是11万次/s,写8.1万次/s
  • 丰富的数据类型-redis支持二进制案例的strings,lists,hashes,sets及ordered sets数据类型操作
  • 原子性
  • 支持publish/subscribe,通知,key过期等特性

三、安装

报错: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 make install
  • cd /usr/local/bin
  • ls -all
  • sudo cp /usr/local/redis/redis.conf /etc/redis/

四、string类型

  • set key value
  • setex key second value 设置一段时间过期的键值数据(以秒为单位)
  • mset key1 value1 key2 value2 ... 设置多个键值数据
  • append key value 追加值
  • get key 获取值
  • mget key1 key2 key3 获取多个值

五、键命令

  • keys * 查看所有键
  • keys a* 查看键中带有a的键
  • exists key 判断键是否存在,存在返回1,不存在返回0
  • type key 查看键对应的值的类型
  • del key 删除键值对
  • expire key second 设置键的过期时间,以秒为单位
  • ttl key 查看有效时间,以秒为单位

六、hash类型

hash类型类似对象,一个对象内有多个不重复的属性

  • hset key field value 设置单个属性
  • hmset key field1 value1 field2 value2 . 设置多个属性
  • hkeys key 获取指定键的所有属性
  • hget key field 获取一个属性的值
  • hmget key field1 field2 ... 获取多个属性的值
  • hvals key 获取所有属性的值
  • hdel key field1 field2 ... 删除属性

报错:misconf redis is configured to save RDB snapshots,but is currently not able to persist on disk

  • 原因:
    • 强制关闭Redis快照导致不能持久化。
  • 解决方案:
    • 运行config set stop-writes-on-bgsave-error no 命令后,关闭配置项stop-writes-on-bgsave-error解决该问题。

七、list类型

  • lpush key value1 value2 ... 往左侧插入数据
  • rpush key value1 value2... 往右侧插入数据
  • linsert key before或after 现有元素 新元素 在指定元素的前或后插入数据
  • lrange key start stop 从左侧开始获取一定量数据,索引可以是负数,表示从尾部开始
  • lset key index value 设置指定索引位置的元素值
  • lrem key count value 删除指定元素

八、set类型

无序集合

  • sadd key member1 member2 ... 添加元素
  • smembers key 返回所有元素
  • srem key value 删除指定元素

九、zset类型

有序集合

  • zadd key score1 member1 score2 member2 ... 添加(score表示权重,类似排序)
  • zrange key start stop 获取指定范围内元素
  • zrangebyscore key min max 返回score值在指定范围内的值
  • zscore key member 返回member的score值
  • zrem key member1 member2 ... 删除指定元素
  • zremrangebyscore key min max 删除权重在指定范围的元素

十、python交互

from redis import StrictRedis

十一、搭建主从

  1. master用于写数据,单个
  2. slave用于读数据,可多个
  • 配置主

    • sudo vim redis.conf
    • bind 本机ip地址
    • sudo service redis stop
    • sudo redis-server redis.conf
  • 配置从

    • sudo cp redis.conf ./slave.conf 复制/etc/redis/redis.conf
    • sudo vim slave.conf 修改redis/slave.conf文件
    • bind 主IP地址
    • slaveof 主IP地址 6379
    • port 6378
    • sudo resid-server slave.conf 启动从服务
    • redis-cli -h 主IP地址 info Replication
  • 数据操作

    • redis-cli -h 主IP地址 -p 6379 进入主
    • redis-cli -h 主IP地址 -p 6378 进入从

十二、搭建集群


port 7000 
bind 机器1IP地址 
daemonize yes 
pidfile 7000.pid 
cluster-enabled yes 
cluster-config-file 7000_node.conf 
cluster-node-timeout 15000 
appendonly yes
  • 创建7001.conf
port 7001
bind 机器1IP地址
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes
  • 创建7002.conf
port 7002
bind 机器1IP地址
daemonize yes
pidfile 7002.pid
cluster-enabled yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes

 

 

 

区别点port、pidfile、cluster-config-file三项

  • 启动
redis-server 7000.conf
redis-server 7001.conf
redis-server 7002.conf
  • 配置机器2
    • 同机器1,port向后叠加,pidfile、cluster-config-file随之更改
  • 创建集群
    • 在机器1中
sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
    • 安装ruby
sudo apt-get install ruby
    • 创建集群命令
 
    • 如果报错
-- 先查看⾃⼰的 gem 源是什么地址
gem source -l -- 如果是https://rubygems.org/ 就需要更换
-- 更换指令为
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
-- 通过 gem 安装 redis 的相关依赖
sudo gem install redis
-- 然后重新执⾏
  • 必须要3个或以上的主节点,否则在创建集群时会失败,并且当存 活的主节点数⼩于总节点数的⼀半时,整个集群就⽆法提供服务了
  • python交互
    • pip install redis-py-cluster
from rediscluster import *
if __name__ == '__main__':
  try:
    # 构建所有的节点,Redis会使⽤CRC16算法,将键和值写到某个节点上
    startup_nodes = [
        {'host': '192.168.26.128', 'port': '7000'},
        {'host': '192.168.26.130', 'port': '7003'},
        {'host': '192.168.26.128', 'port': '7001'},
    ]
    # 构建StrictRedisCluster对象
    src=StrictRedisCluster(startup_nodes=startup_nodes,decode_responses=True)
    # 设置键为name、值为itheima的数据
    result=src.set('name','itheima')
    print(result)
    # 获取键为name
    name = src.get('name')
    print(name)
  except Exception as e:
    print(e)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值