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'))
    

  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/cjwnb/p/14438791.html
Copyright © 2011-2022 走看看