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

Redis 键值存储数据库,类似字典

一.内存数据库

        mysql  mongodb 都是以文件的形式存储在磁盘上

        Redis数据在内存中,操作内存的速度远远高于磁盘,并且Redis的数据最终也会存储在磁盘上

二.Redis服务器与客户端

手动连接 任务资源,服务关闭
redis.windows.conf    

        启动服务器 redis-server 配置文件路径

        客户端连接服务器

                redis-cli -h 主机ip

                              -a 密码   

三.配置文件

  (1)获取配置信息

config  get*  获取所有配置
config  get  requirepass
config  set  requirepass  密码

(2)配置用户密码

requirepass 123456
redis-cli -h -a
auth 123456

(3)常见配置项

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

四.5种数据类型

(1)字符串 string

常用操作:
    set(k,v) 设置单个   存在会覆盖
    get(k) 获取一个
    mset({k:v,k:v}) 设置多个
    mget([k,k,k,k]) 获取多个
    incr 加1
    incrby  加增量
    decr  减1
    decrby  减增量
    setex(k,time,v)  设置带有时间的
    setnx(k,v)  不存在则插入,不会覆盖
    append(k,v)  在原始数据后添加
    strlen(k)

(2)列表 list 存储多个数据

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

(3)哈希 hash 存储键值对

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

(4)集合 set 无序不重复

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

(5)有序集合 zset

        通过权重实现有序,每一个值都带有权重

常用操作:
    zadd(name,{v:score})   添加带有权重的元素
    zrem(name,v,v)     从有序集合中移除
    zcard(name)       个数
    zcount(name,min,max)     权重在min,max之间元素个数
    zrange(name,start,stop)     获取指定索引范围元素
    zrevrange(name,start,stop)    逆序获取索引对应元素
    zrangebyscore(name,start,stop)  获取指定分支对应元素
    zrevrangebyscore(name,start,stop)  逆序获取指定分支对应元素
    zscore(name,value)  获取value对应的权重

 五.键对应的操作

keys()  返回所有键
type(k)    查看键对应值的类型
exists(k)  查看键是否存在
expire(k,time)   设置有效期
ttl(k)   查看剩余时间
delete(k)   删除键

六.python操作redis

安装模块  pip install redis

流程:

        导入模块        import redis

        构建连接        client=redis.StrictRedis(password="123456")

        五种数据操作      (字符串,哈希,列表,集合,有序集合)

        释放连接                client.close()

七.Redis缓存数据库 缓存mysql数据

‘’‘

        因为操作mysql效率远远低于redis

        第一次获取数据,把mysql中的数据放入redis中,以后操作redis

例如:真实数据存储在mysql上

        每次需要获取评论,先从redis中取,如果redis中没有 则从mysql取 取出来放入redis
        并且给与有效期,如果reids中直接就有,则直接使用redis

’‘’

八.订阅发布

 '''

订阅频道         subscribe 频道名

取消订阅         unsubscribe 频道名

发布消息         publish 频道名 消息

‘’‘

案例:

import redis
import threading
def t_main():
    client = redis.StrictRedis(password="123456")
    #获取发布订阅实例
    ps = client.pubsub()
    #监听指定频道
    ps.subscribe("c1","c2","c3")
    #开始监听频道
    for message in ps.listen():
        print(f"消息",message)
    # client.close()
def main():
    t = threading.Thread(target=t_main)
    # 开启线程
    t.start()
    while True:
        info = input("输入频道与消息,使用:分割")
        channel, message = info.split(":")
        if len(info) != 2:
            client = redis.StrictRedis(password="123456")
            client.publish(channel,message)
        else:
            print('输入格式错误,重新输入')
    # 阻塞线程
    t.join()

if __name__=="__main__":
    main()

九.数据库集群 

’‘’

数据库集群
        主从复制
                master 主机
                        修改bind 改成自己主机ip
                slave从机 复制主机文件
                        更改一下port(设置自己的,随便设置)
                        slaveof 主机ip 主机端口
         主机写入数据 从机也能查看
         info replication

‘’‘

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值