redis 安装及使用

一. 安装:
  • 以下步骤运行在 Centos 7:
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
  • 首先安装
    pip3 install redis

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

  • 一: 先在虚拟机上启动 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)
  • 三: 有错吗兄弟???
    • 别急,跟着节奏来
    首先把你服务端的防火墙关掉。
    systemctl stop firewalld
    systemctl disable firewalld
    
    然后你的错误应该来到了:
    链接redis 时只能通过本地localhost (127.0.0.1)这个来链接,而不能用网络ip(192.168..)这个链接,如果用网络ip 链接会报以下的错误:
    (error) DENIED Redis is running in protected mode because protected mode is enabled...  
    这是说处于保护模式,只能本地链接,我们需要修改配置文
    vim redis.conf 
    第一步: # bind:127.0.0.1
    第二步: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程,设置为no
    daemonize no
    第三步: 保护模式
    protected-mode no 
    *****第四步:     
    启动的时候,带着配置文件。
    src/redis-server redis.conf
       完美!!!
    

Redis

  • 简介
    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

  • 配置文件

    • 默认16个数据库 0-15
    • 时间间隔物理写的频度
      save 900 1 #900秒写了一次 就写操作
    • 物理存储名称
      dbfilename
  • Redis是key-value的数据,所以每个数据都是一个键值对

    • 键的类型是字符串
    • 值的类型分五种
      • 字符串 string
      • 哈希 hash
      • 列表 list
      • 集合 set
      • 有序集合 zset
  • redis 操作的五种数据格式再了解一下:

    • 字符串 String操作
    • 哈希 Hash 操作
    • 列表 List 操作
    • 集合 Set 操作
    • 有序集合 Sort Set 操作
  • Redis是key-value的数据,所以每个数据都是一个键值对

- 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 里面,应该是公用一个链接
  • 但是在 django 里面,它有自己的组件。
pip3 install django-redis
  import django_redis
  conn = django_redis.get_redis_connection()
  
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容