掌握Redis,看完这篇文章就够了

1.概念 

        Redis(Remote Dictionary Server)是一个键值存储数据库,类似字典,它提供了持久化、高性能、键值对存储以及多种数据结构的支持。Redis通常被用作数据库、缓存、消息中间件等多种用途。

        内存存储:Redis 将数据存储在内存中,因此具有非常高的读写性能。同时,Redis 也支持将内存数据持久化到磁盘中,以便在重启后恢复数据。

        键值对存储:Redis 是一个键值对存储系统,每个键都与一个值相关联。这使得 Redis 可以很方便地存储和检索数据。

        数据结构支持:除了基本的字符串类型,Redis 还支持列表、集合、有序集合、哈希表等多种数据结构。这些数据结构都可以通过 Redis 提供的命令进行操作和查询。

        高性能:由于 Redis 将数据存储在内存中,并使用单线程模型,它具有非常高的读写性能。此外,Redis 还支持主从复制、分片等技术来提高性能和可扩展性。

        支持事务:Redis 支持事务操作,可以一次执行多个命令,并保证这些命令的原子性。

        发布订阅:Redis 提供了发布订阅机制,允许客户端订阅感兴趣的频道,并在有消息发布到频道时接收到通知。

        多语言支持:Redis 支持多种编程语言的客户端库,包括 Python、Java、C#、Node.js 等。

2. Redis服务器与客户端

        检测是否安装Redis: win+r,输出cmd,输入redis-cli检测客户端是否连接服务器,其中-h
    主机ip -a 密码,启动服务器:redis-server 配置文件路径,查看所有键 :keys *

找到Redis目录下的redis.windows-service.conf文件,在requirepass foobared下方添加密码

2.1 常见配置项

    dbfilename 数据文件,默认dump.rdb 持久化文件
    requirepass 用户密码
    masterauth 主机密码
    logfile 日志文件
    port   6379
    databases 16
    loglevel  日志等级
    bind 绑定ip
    保存时间
        save time changecount
        save 900 1 修改一个15分钟以后保存
        save 60 10000 修改达到一万个 1分钟保存

2.2 获取配置信息

        config get *  获取所有配置
        config get requirepass
        config set requirepass 123456

2.3 配置用户密码

        requirepass 123456
        redis -cli -h -a  或者登录以后使用auth

 3.五种数据类型(Python操作)

安装redis模块 pip install redis

 3.1 字符串

        set(k,b) 设置单个
        get(k) 获取单个
        mset(k:v,k:v) 设置多个
        mget(k,k,k) 获取多个
        delete(k) 删除
        incr 加1
        incrby 加 增量
        decr 减1
        decrby 减 增量
        setex(k,time,v) 设置有效期字符串
        seten(k,v) 不存在插入,不会覆盖
        append(k,v) 在原始数据后拼接
        strlen(k) 键对应操作
        keys() 返回所有键
        exists(k) 键是否存在
        type(k) 键都类型
        exprie(k,time) 设置键的有效期
        ttl(k) 查看剩余时间
                存在:-1
                不存在:-2
        delete(k) 删除键

import redis
# 构建连接(若没有密码password可以不写)
client = redis.StrictRedis(password=123456)
# 1.数据类型 字符串
r = client.set("s2", "hi world")
r = client.get("s1")
r = client.mset({"s3": "s33", "s4": "s44","s5":"s55"})
r = client.mget(["s3", "s4","s5"])
r = client.incr("s6", 100)
r = client.incrby("s6", 10)
r = client.decr("s6")
r = client.decrby("s6", 10)
r = client.setex("s7", 10, "s77")
r = client.delete("s6")
r = client.append("s5", "888888")
r = client.expire("s6", 50)
r = client.exists("s6")
r = client.ttl("s6")
r = client.type("s6")
r = client.keys("s6")
r = client.strlen("s5")
print(r)

client.close()

 3.2 哈希

        存储键值对
        常用操作
            hset(name,key,value) 添加键值对
            hget(name,key) 获取键对应的值
            hmset(name,{}) 添加多个键值对
            hmget(name,[key]) 获取列表字段的值
            hincrby(name,key,value) 字段值 增加增量
            hgetall(name) 所有字段与值
            hkeys(name) 所有字段
            hvals(name) 所有字段值
            hexists(name,key) 字段存在否
            hdel(name,key) 删除字段
            hlen(name,key) 字段长度
    

import redis

client = redis.StrictRedis()

# 2.哈希  键(redis键) 字段(哈希中的键) 值(哈希中的值)
r = client.hset("h2", "k1", "v1")
r = client.hget("h2","k1")
r = client.hmset("h2", {"k2": "v2", "k3": "v3"})
r = client.hmget("h2", ["k1", "k2", "k3"])
r = client.hset("h2", "k4", "100")
r = client.hincrby("h2", "k4", 100)
r = client.hvals("h2")
r = client.hgetall("h2")
r = client.hkeys("h2")
r = client.hvals("h2")
r = client.hexists("h2", "k5")
r = client.hlen("h2")
r = client.delete("h2", "k4")
print(r)

client.close()

 3.3 列表

        存储多个数值
        常见操作

                lpush(key,v) 开头插入
                rpush(key,v) 末尾插入
                lpop(key) 开头删除
                rpop(key) 末尾删除
                lset(k,index,v) 修改指定位置指定元素
                linsert(key,"after| before", pivot,value) 在指定位置插入指定元素
                lrem(key, count, value) 删除指定个数的指定元素
                ltrim(key,start, stop) 把原始内容切片
                lrange(key,start, end) 返回对应位置范围所有元素
                lindex(key,value) 返回对应位置的元素

import redis

client = redis.StrictRedis()

# 3.列表
r = client.lpush("l2", 1, 2, 3, 7)
r = client.rpush("l2", 0, -1, -3, -5, -7)
r = client.lpop("l2")
r = client.rpop("l2")
r = client.lset("l2", 0, "7")
r = client.linsert("l2", "before", "0", "0.5")
r = client.linsert("l2", "after", "0", "-0.5")
r = client.lrem("l2", 1, "-3")
r = client.ltrim("l2", 0, 10)
r = client.lrange("l2", 0, 10)
r = client.lindex("l2", 0)

print(r)

client.close()

 3.4 集合

        无序,不重复
        常用操作
            sadd(key,values) 将多个数据插入集合
            srem(key,value) 移除指定value
            spop(key)  随机移除
            srandmember(key,count) 随机取count个不删除
            scard(key) 集合中元素个数
            smembers(key) 返回所有元素
            sismember(key,value) value是否在集合中
            sinter([key, key]) 交集
            sinterstore(dest,[key, key]) 将返回交集存储到集合
            sunion([key, key]) 并集
            sunionstore(dest, [key, key]) 将返回并集存储到集合
            sdiff([key, key]) 差集
            sdiffstore(dest, [key, key]) 将返回差集存储到集合

import redis

client = redis.StrictRedis()
# 4.集合
r = client.sadd("set2", 100, 200, 300, 400, 500)
r = client.sadd("set3", 400, 500, 600, 700, 800)
r = client.srem("set2", "100")
r = client.spop("set2")
r = client.srandmember("set", 2)
r = client.scard("set2")
r = client.smembers("set2")
r = client.sismember("set2", "700")
r = client.sinter(["set2", "set3"])
r = client.sinterstore("set4", ["set2", "set3"])
r = client.sunion(["set2", "set3"])
r = client.sunionstore("set5", ["set2", "set3"])
r = client.sdiff(["set2", "set3"])
r = client.sdiffstore("set6", ["set2", "set3"])
r = client.smembers("set4")

print(r)

client.close()

3.5 有序集合

          可自动按值排序,通过权重实现有序,每一个值抖音权重
         常见操作:
            zadd(name, {v:score}) 添加带有权重的元素
            zrem(name,v,v) 从有序集合中移除
            zcard(name) 个数
            zcount(name, min ,max) 权重在min,max之间的元素个数
            zrange(name, start,stop) 获取指定索引范围元素
            zrangebyscore(name,min,max) 获取指定分支对应的元素
            zrevrangebyscore(name,max,min) 逆序获取指定分支对应的元素
            zscore(name,value) 获取value对应的权重

import redis

client = redis.StrictRedis()

# 5.有序集合
r = client.zadd("zset2", {"v1": 10, "v2": 20, "v3": 30, "v4": 40, "v5": 50})
r = client.zrem("zset2", "v1", "v2")
r = client.zcard("zset2")
r = client.zcount("zset2", 10, 100)
r = client.zrange("zset2", 0, 5, withscores=True)
r = client.zrevrange("zset2", 0, 2, withscores=True)
r = client.zrangebyscore("zset2", 0, 100,  withscores=True)
r = client.zrevrangebyscore("zset3", 100, 0, withscores=True)
r = client.zscore("zset2", "v5")
print(r)

client.close()

  • 33
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值