zoukankan      html  css  js  c++  java
  • redis

    安装redis

    brew install redis 
    brew services start redis
    pip3 install redis
    

    redis数据类型

    1. 字符串

    • 设置值 set
    127.0.0.1:6379> set name daxiong
    OK
    

    • 获取单个key的值 get
    127.0.0.1:6379> get name
    "daxiong"
    

    • 获取指定索引 getrange
    127.0.0.1:6379> getrange name 2 6
    "xiong"
    

    • GETSET 重新赋值key, 返回原来的值
    127.0.0.1:6379> GETSET name xiaoxiong
    "daxiong"
    127.0.0.1:6379> GET name
    "xiaoxiong"
    

    • 获取多个key的值 mget
    127.0.0.1:6379> SET age 38
    OK
    127.0.0.1:6379> get age
    "38"
    127.0.0.1:6379> mget name age
    1) "xiaoxiong"
    2) "38"
    

    • 设置key并指定过期时间 SETEX
    127.0.0.1:6379> SETEX sex 3 male
    OK
    127.0.0.1:6379> get sex
    "male"
    127.0.0.1:6379> get sex
    (nil)
    

    • 设置不存在的key, 如果key存在, 无法设置成功 SETNX
    127.0.0.1:6379> EXISTS money
    (integer) 0
    127.0.0.1:6379> SETNX money 10000
    (integer) 1
    127.0.0.1:6379> SETNX money 9999
    (integer) 0
    127.0.0.1:6379> GET money
    "10000"
    

    • 获取字符串长度STRLEN
    127.0.0.1:6379> GET money
    "10000"
    127.0.0.1:6379> STRLEN money
    (integer) 5
    

    • 字符串如果为数字, 做加法运算INCRBY
    127.0.0.1:6379> GET money
    "10000"
    127.0.0.1:6379> STRLEN money
    (integer) 5
    127.0.0.1:6379> INCRBY money 99
    (integer) 10099
    

    • 字符串如果为整数, 做减法运算DECRBY
    127.0.0.1:6379> GET money
    "10099"
    127.0.0.1:6379> DECRBY money 99
    (integer) 10000
    127.0.0.1:6379> GET money
    "10000"
    

    • 字符串拼接APPEND
    127.0.0.1:6379> GET name
    "xiaoxiong"
    127.0.0.1:6379> APPEND name lovedaxiong
    (integer) 20
    127.0.0.1:6379> GET name
    "xiaoxionglovedaxiong"
    

    2.hash

    127.0.0.1:6379> HSET people name daxiong age 18
    (integer) 2
    

    • 单查
    127.0.0.1:6379> HGET people name
    "daxiong"
    127.0.0.1:6379> HGET people age
    "18"
    

    • 多查
    127.0.0.1:6379> HGETALL people
    1) "name"
    2) "daxiong"
    3) "age"
    4) "18"
    

    • 查看哈希表key中指定的字段是否存在
    127.0.0.1:6379> HEXISTS people name
    (integer) 1
    127.0.0.1:6379> HEXISTS people name2
    (integer) 0
    

    字段name存在返回1(True), 字段name2不存在返回0(False)


    • 获取哈希表字段的数量
    127.0.0.1:6379> HLEN people
    (integer) 2
    

    • 获取哈希表中的字段
    127.0.0.1:6379> HKEYS people
    1) "name"
    2) "age"
    

    • 获取哈希表中所有的值
    127.0.0.1:6379> HVALS people
    1) "daxiong"
    2) "18"
    

    • 字段不存在时候设置哈希表的值

    使用HSET 赋值, 可以覆盖已存在的值

    127.0.0.1:6379> HGET people name
    "daxiong"
    127.0.0.1:6379> HGET people age
    "18"
    127.0.0.1:6379> HSET people name xiaoxiong
    (integer) 0
    127.0.0.1:6379> HGET people name
    "xiaoxiong"
    

    使用HSETNX 赋值, 只能给不存在的字段赋值, 已存在的字段赋值不覆盖原有的值

    127.0.0.1:6379> HSET people sex nan
    (integer) 1
    127.0.0.1:6379> HGET people sex
    "nan"
    

    • 删(可以多删)
    127.0.0.1:6379> HDEL people name age
    (integer) 2
    127.0.0.1:6379> HGET people name
    (nil)
    127.0.0.1:6379> HGET people age
    (nil)
    

    3.列表

    • 设置值
    127.0.0.1:6379> RPUSH status success warning failure
    (integer) 3
    

    • 末尾插入值
    127.0.0.1:6379> RPUSHX status danger
    (integer) 4
    

    • 获取值
    127.0.0.1:6379> LRANGE status 0 -1
    1) "success"
    2) "warning"
    3) "failure"
    4) "danger"
    

    • 修改值
    127.0.0.1:6379> LSET status 3 dangerous
    OK
    

    • 移除列表最后一个元素
    127.0.0.1:6379> RPOP status 
    "dangerous"
    

    4.集合

    • 添加值
    127.0.0.1:6379> SADD python django mysql redis rabbitmq
    (integer) 4
    127.0.0.1:6379> SADD java spring mysql redis kafka
    (integer) 4
    

    • 查看值
    127.0.0.1:6379> SMEMBERS python
    1) "django"
    2) "rabbitmq"
    3) "redis"
    4) "mysql"
    127.0.0.1:6379> SMEMBERS java
    1) "kafka"
    2) "spring"
    3) "redis"
    4) "mysql"
    

    • 查看集合数量
    127.0.0.1:6379> SCARD python
    (integer) 4
    127.0.0.1:6379> SCARD java
    (integer) 4
    

    • 求集合差集
    127.0.0.1:6379> SDIFF python java
    1) "django"
    2) "rabbitmq"
    127.0.0.1:6379> SDIFF java python
    1) "spring"
    2) "kafka"
    

    • 求集合交集
    127.0.0.1:6379> SINTERSTORE pJava python java
    (integer) 2
    127.0.0.1:6379> SMEMBERS pJava
    1) "redis"
    2) "mysql"
    

    • 求集合并集
    127.0.0.1:6379> SUNION python java
    1) "mysql"
    2) "django"
    3) "rabbitmq"
    4) "spring"
    5) "kafka"
    6) "redis"
    

    5.有序集合

    • 添加
    127.0.0.1:6379> ZADD score 30 a1 60 a2 10 a3 90 a4
    (integer) 4
    

    • 获取集合的数量
    127.0.0.1:6379> ZCARD score 
    (integer) 4
    

    • 指定索引 范围 从高到低获取集合的对象
    127.0.0.1:6379> ZREVRANGE score 0 -1
    1) "a4"
    2) "a2"
    3) "a1"
    4) "a3"
    127.0.0.1:6379> ZREVRANGE score 0 2
    1) "a4"
    2) "a2"
    3) "a1"
    

    • 指定value 范围 从高到低获取集合的对象
    127.0.0.1:6379> ZREVRANGEBYSCORE  score 80 20
    1) "a2"
    2) "a1"
    

    • 对集合value做加法并重新赋值
    127.0.0.1:6379> ZINCRBY score 100 a3
    "110"
    127.0.0.1:6379> ZREVRANGE score 0 2
    1) "a3"
    2) "a4"
    3) "a2"
    

    python使用redis

    1. 安装

    pip3 install redis
    

    2. 直接使用

    import redis
    
    # 直接使用
    r = redis.Redis()
    r.getset('name', 'xiaoxiong')
    print(r.get('name'))
    
    
    r1 = redis.Redis()
    print(r1.get('name'))
    

    3. 连接池使用

    import redis
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, max_connections=100)
    r = redis.Redis(connection_pool=pool)
    r.getset('name', 'xiaoxiong')
    print(r.get('name'))
    
    
    r1 = redis.Redis()
    print(r1.get('name'))
    

    4. 作为缓存数据库使用

    • 安装django-redis 依赖
    pip3 install django-redis
    

    • 配置文件中配置缓存指向redis
    # 缓存 - redis
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 100}
            }
        }
    }
    

    • 测试代码
    from django.core.cache import cache
    import os
    import django
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
    django.setup()
    cache.set('name', 'bigBear')
    print(cache.get('name'))
    
    # nx = True key值不存在才创建, 存在不创建
    cache.set('test01', 000, nx=True)
    print(cache.get('test01'))
    cache.set('test01', 111, nx=True)
    print(cache.get('test01'))
    

  • 相关阅读:
    Redis安装部署
    传输方式Topic和Queue的对比
    Hudson配置及使用
    linux 绿色版 bes 6.6服务安装
    LINUX磁盘管理
    并发用户数与 TPS 之间的关系
    性能测试场景
    计算并发用户数的五种方法
    让selenium自动化脚本运行的更快的技巧
    Jmeter学习
  • 原文地址:https://www.cnblogs.com/cjwnb/p/14438791.html
Copyright © 2011-2022 走看看