redis 安装及使用

2018-03-05  本文已影响0人  Ugfly
一. 安装:
wget http://download.redis.io/releases/redis-4.0.2.tar.gz

tar xzf redis-4.0.2.tar.gz

cd redis-4.0.2

make
src/redis-server
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
二. Python 操作 redis

来先在 pycharm 里面走一波,和虚拟机交互一下。

import redis

conn = redis.Redis(host='192.168.20.75', port=6379)
# conn.ping()
conn.set('ff', 17)
ret = conn.get('ff')
print(ret)

Redis

- string

    string是redis最基本的类型
    最大能存储512MB数据
    string类型是二进制安全的 即可以为任何数据 比如数字 图片 序列化对象等

    1. set key value             #设置键值
    2. setex key second value    #设置键值及过期时间,以秒为单位
    3. get key                   #根据键获取值,如果不存在,此键则返回null

    运算
        - 要求: 值是数字
        - incr key  #将key对应的value加1
 

- key的命令

    KEYS pattern       #查找键 参考支持正则
        - keys *       #查询所有的key 匹配任意个字符
        - keys ?       #匹配任意一个字符
        - keys [a-z]   #a或b
        - keys [0-9]
        - keys [a-z],0-9]  #a0
        - keys  ?     #匹配一个
        - keys  *      #匹配多个  

    EXISTS key         #判断键是否存在,如果存在返回1,不存在返回0
    TYPE   key         #查看键对应的value类型
    DEL    key         #删除键及对应的值
    TTL    key         #查看有效时间 以秒为单位
    EXPIRE key  10     #设置key的过期时间 以秒为单位


- hash      #hash 用于存储对象,对象的格式为键值对

    #默认配置文件
    hash-max-ziplist-entries 512  #512字节
    hash-max-ziplist-value   64   #字段数目


    #设置
    HSET    key field value                     #设置单个属性
    HSETNX  key field value                     #字段不存在才设置成功
    HMSET   key field1 value1 field2 value2     #设置多个属性值

    #获取
    HGET    key field           #获取一个属性的值
    HMGET   key field1 field2   #获取多个属性的值
    HGETALL key                 #获取所有属性和值
    HKEYS   key                 #获取所有的属性
    HVALS   key                 #获取所有field对应的值
    HLEN    key                 #返回包含属性的个数
    HEXISTS key  field          #判断这个属性的值是否存在

    #相加
    HINCRBY key field 10            #对属性的值相加  值得是数值类型
    HINCRBYFLOAT key field 10.11    #key做浮点相加,原来key也是浮点

    #删除
    HSEL key field1  field1         #删除




- list

    列表的元素类型为string
    按照插入顺序排序
    在列表的头部或者尾部增加元素

    LPUSH                #在头部插入数据
    LINSERT key BEFBEFORE/AFTER 索引 value  #在一个元素的前后插入新元素


- 发布订阅

    - 发布订阅模式指一种代码的结构 开发的开发方式
    - 有一端完成数据的发布,定制  另一端接收数据

    - 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
    - 订阅者对一个或多个频道感兴许,只需要接受感兴趣的消息,不需要知道什么样的发布者发布的
    - 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
    - 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
    - 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来

    消息的格式
        - 推送消息的格式包含三部分
        - part1:消息类型,包含三种类型
            - subscribe     表示订阅成功
            - unsubscribe    表示取消订阅成功
            - message        表示其它终端发布消息
         如果第一部分的值为subscribe 则第二部分是频道 第三部分是现在订阅的频道的数量
         如果第一部分的值为unsubscribe  则第二部分是频道 第三部分是订阅的频道的数量 如果为0则表示当前没有订阅任何频道 当在Pub/
                Sub以外状态,客户端可以发出任何redis命令
         如果第一部分的值为message 则第二部分是来源频道的名称 第三部分是消息的内容


    命令
        - SUBSRIBE    频道名称         #订阅
        - UNSUBSRIBE  频道名称         #取消订阅 如果不写参数,表示取消所有订阅
        - PUBLISH      频道           #发布
{
"k1":"ff",
"k2":[1,2,3,5,5,3,2,1],
"k3":{1,2,3,5,6},
"k4":{
    "n1":'pp',
    "n2":"ww"
      },
"k5":{(11,1),('ff',5)},
}

hscan: 增量迭代
hscan_iter: 一个个拿
  - 可是又不能让他频繁链接,一次取比如20条。在该方法中,有调用了 hscan
如果需要链接的话,推荐使用连接池
pool = redis.ConnectionPool(host='', port=6379)
r = redis.Redis(connection_pool = pool)
如果在 django 里面,应该是公用一个链接
pip3 install django-redis
  import django_redis
  conn = django_redis.get_redis_connection()
  
上一篇 下一篇

猜你喜欢

热点阅读