• python与redis交互及redis基本使用


    Redis简介

    Redis是一使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日个开源的志型、Key-Value数据库,并提供多种语言的API。

    从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

    Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色

    Redis和其他数据库相比有如下特点:

    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份

    Redis的优势在于:

    • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
    • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    Redis安装及配置

    redis安装

    linux下,结果以下步骤安装redis

    step1:下载 wget http://download.redis.io/releases/redis-3.2.8.tar.gz

    step2:解压 tar -zxvf redis-3.2.8.tar.gz

    step3:复制,放到usr/local目录下 sudo mv ./redis-3.2.8 /usr/local/redis/

    step4:进入redis⽬录 cd /usr/local/redis/

    step5:生成 sudo make

    step6:测试,这段运行时间会较长 sudo make test

    step7:安装,将redis的命令安装到/usr/bin/目录 sudo make install

    step8:安装完成后,我们进入目录/usr/bin中查看 cd /usr/bin ls -all 查看

    redis-server   redis服务器

    redis-cli   redis命令行客户端

    redis-benchmark   redis性能测试工具

    redis-check-aof   AOF文件修复工具

    redis-check-rdb   RDB文件检索工具

    step9:配置文件,移动到/etc/目录下 配置文件目录为/usr/local/redis/redis.conf

    sudo  cp  /usr/local/redis/redis.conf /etc/redis/复制一份,一般修改配置文件前,都先复制一份备用。

    Redis官方文档:http://redis.cn/

    redis核心配置

    参考:https://blog.csdn.net/ljphilp/article/details/52934933

    Redis的配置信息在/etc/redis/redis.conf下,通过:sudo vi /etc/redis/redis.conf查看

    核心配置选项:

    • 绑定ip:bind 127.0.0.1默认为止允许本机访问。如果需要远程访问,可将此行注释,或者绑定一个真实的ip。
    • 端口:默认为6379
    • daemonize  yes :是否以守护进程运行
    1. 如果以守护进程运行,则不会在命令行中阻塞,类似于服务
    2. 如果以非守护进程运行,则当前终端被阻塞
    3. 设置为yes表示守护进程,no为非守护进程
    4. 一般设置为yes
    • dbfilename  dump.rdf  :数据文件
    • dir /var/lib/redis  :数据文件存储路径
    • logfile /var/log/redis/redis-server.log:日志文件
    • dabase 16 :数据库,默认为16个
    • slaveof :主从赋值,类似于双机备份

    Redis服务端和客户端简单使用

    服务端:

    • redis-server : 启动服务端
    • redis-server -help : 使用help查看帮助文档
    • sudo service redis start :启动redis
    • sudo service reids stop:停止redis
    • sudo service reids restart:重启redis

    客户端:

    • redis-cli :启动客户端
    • redis-cli -help:使用help查看帮助文档
    • select n:选择数据库,数据库没有名称,默认有16个,通过0-15表示,默认链接第一个数据库。

    个人习惯:

    • ps -ef | grep  redis :查看redis服务器进程
    • sudo kill -9 pid:杀死redis服务器
    • sudo redis-server /etc/redis/redis.conf :指定加载的配置文件

    Redis数据结构及基本使用

    数据结构

    redis是key-value的数据结构,每条数据都是一个键值对;键类型为字符串,且不能重复

    值类型分为五种:

    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset

    基本使用

    # coding = utf-8
    """
    # 键命令
        keys pattern : 查看键,支持正则
        keys * : 查看所有键
    
        exists key : 查看键是否存在,存在返回1,不存在返回0
        type key : 查看键对应的value的类型
        del key1 key2 : 删除键及对应的值
    
    # string字符串
        set key value : 保存键和值
        get key : 获取键对应的值,不存在返回bil
    
        setex key seconds value : 设置键值,及其对应的过期时间,单位为s
        ttl key : 查看键还有多久过期
    
        mset key1 value1 key2 value2 : 设置多个键及其对应的值
        mget key1 key2 : 获取多个键的值
    
        append key value : 追加键值
    
    # list 列表
        lpush key value1 value2 : 从左侧增加插入数据
        rpush key value1 value2 : 从右侧增加插入数据
    
        linsert key before value new_value : 在指定的value前插入值新值(new_value)
        linsert key after  value new_value : 在指定的value后插入新值(new_value)
    
        lrange key start stop : 获取key的角标从start到stop的值
        lrange key 0 -1 : 获取key的列表中所有值(角标操作和列表相同)
    
        lset key index value : 设置指定索引位置的元素值
    
        lrem key count value : 将列表中出现count次的value 移除
                               其中,count > 0表示从头开始移除
                                    count < 0 表示从尾开始移除
    
    # hash 哈希类型

      # 哈希类型用于存储对象,对象结构为属性和值,值的类型为字符串  
    hset key field value : 设置单个属性及其对应的值 hmset key field1 value1 field2 value2 : 设置多个属性及其对应的值 hkeys key : 获取指定键的所有属性 hget key field : 获取一个属性的值 hmget key field1 field2 : 获取多个属性的值 hvals key : 获取所有属性的值 删除整个hash键及对应的值,使用del命令 hdel key field1 field2 : 删除属性,属性对应的值会一起呗删除 # set 无序集合 sadd key member1 member2 : 添加元素 smembers key : 获取所有元素 srem key : 删除元素 # zset 有序集合 zadd key score1 member1 score2 member2 : 添加元素 zrange key start stop : 获取元素,操作同python中的set zrangebyscore key min max : 获取score在min和max间的member zscroe key member : 返回member的score值 zrem key member1 member : 删除指定元素 zremrangebyscore key min max : 删除score在指定范围的元素
    """

    Redis与python交互

     python操作redis需要安装redis包,有如下安装方式:

    • pip install redis
    • easy install redis

    基本上和redis操作相同

    import redis 
    
    # 创建redis实例,与redis服务器建立连接,选择数据库3
    rds = redis.StrictRedis(host='localhost', port=6379, db=3)
    
    # 添加一个键值对,返回一个布尔型result
    result = rds.set('name', 'zz')
    # 获取name的值,返回name的值,若name没有值,返回None
    result_get = rds.get('name')
    
    # 修改.利用redis的键唯一特性实现修改
    rds.set('name', 'ZZ')
    
    # 删除.通过键删除,成功则返回受影响的键的个数
    result_del = rds.delete('name')

    Redis主从概念

    • 一个master可以拥有多个slave,一个slave也可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
    • master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
    • 通过主从配置可以实现读写分离
    • master和slave都是一个redis实例(redis服务)

     

    修改配置:

    首先修改主的配置文件:etc/redis/redis.conf

    sudo vi redis.conf

    bind 192.168.xxx.xxx

    然后重启redis服务:

    sudo service redis stop

    redis-server redis.conf

    然后配置从

    复制etc/redis/redis.conf文件

    sudo cp redis.conf ./slave.conf

    修改redis/slave.conf文件

    编辑内容:

    bind 192.168.xxx.xxx

    slaveof 192.168.xxx.xxx 6379

    然后启动服务:sudo redis-server slave.conf

    使用:redis-cli -h 192.168.xxx.xxx info Replication查看主从关系

  • 相关阅读:
    *****.NET程序首次加載慢問題
    *****How to access a repositoryItemButtonEdit value from a FileDlg
    抽象类与接口的区别
    C#中使用Split分隔字符串的技巧
    *****User Control Instance/DataGridView.Columns in Visual Studio Design
    LinksPersistInfo not work!
    LookUpEdit用法
    Devpress.XtraGrid.GridControl 笔记
    *****动态执行sql
    *****LookUpEdit hide columns
  • 原文地址:https://www.cnblogs.com/pythoner6833/p/9110571.html
Copyright © 2020-2023  润新知