美文网首页
Redis基本操作

Redis基本操作

作者: 遇明不散 | 来源:发表于2019-08-16 21:07 被阅读0次
    Redis简介
    • 什么是Redis
      • Redis是一个完全免费的,遵守BSD协议的,高性能的key-value数据库,可用作数据库、缓存和消息中间件
    • BSD协议
      • 如果再次发布的产品中包含源代码,则在源代码中必须包含原来代码中的BSD协议
      • 如果再次发布的是二进制类库或软件,则需要在类库或软件的文档的版权声明中包含源代码的BSD协议
      • 不可以用开源代码的作者或机构名字和原产品的名字做市场推广
    • Redis特点
      • Redis支持数据持久化,可以将内存中的数据保存在磁盘中,重启的可以再次使用
      • Redis不仅支持key-value数据类型,同时还提供多种数据存储
      • Redis支持数据的备份,即master-slave模式的数据备份
    • Redis优势
      • 性能极高:读速-11万次/每秒,写速-8.1万次/每秒
      • 丰富的数据类型:string,list,...
      • 原子性:Redis的所有操作都是原子性的,要么成功执行,要么必败完全不执行。单个操作时原子性的,多个食物也支持事务,即原子性。
      • 丰富的特性:Redis通知,key过期等特性
    • Redis连接与相关信息查看
      • redis-benchmark --help 查看帮助信息
      • redis-benchmark -n 10000 -q 性能测试
      • redis-cli -h 127.0.0.1 -p 6379 -a password 连接本地Redis服务
      • redis-cli -h 远程主机地址 -p 6379 -a password 连接本地Redis服务
    Redis常用命令
    # 存数据:set key value
    set a 123
    set b 456
    
    # 取数据:get key
    get a
    
    # 获取多条数据:mget key [key...].
    mget a b
    
    # 检查key是否存在:exists key [key ...]
    # 存在返回1,不存在返回0
    exists a
    
    # 获取key值所存字符串的长度:strlen key
    strlen a # 3
    
    # 获取指定key值所对应的字符串的字符串
    # getrange key start end
    getrange a 1 2 # "23"
    
    # 删除key值:del key
    del b
    
    # 设定过期时间:expire key seconds
    expire a 600
    # 查询key值剩余时间:ttl key
    # 无过期时间返回-1,已经过期返回-2
    ttl a
    
    # 以毫秒设定过期时间:pexpire key ms
    expire a 600
    # 以毫秒查询key值剩余时间:pttl key
    # 无过期时间返回-1,已经过期返回-2
    pttl a
    
    # 移除过期时间:persist key
    persist a
    
    # 重命名:rename key newkey
    rename a A
    
    # 随机返回key值:randomkey
    randomkey
    
    # 获取key所存储的类型:type key
    type a
    
    # 更改指定key值的value(返回key原有的value)
    # getset  key newvalue
    getset a 789
    
    Hash(哈希)
    # 存储hash值:hmset key field value
    hmset teacher name 'Tom' age 23 sex 0
    
    # 获取hash表中key值所有字段和值:hgetall key
    hgetall teacher
    
    # 获取hash表中的key值指定字段的值:hget key field
    hget teacher age
    
    # 删除key下保存的hash表中指定的filed的值:hdel key filed
    hdel teacher sex
    
    # 查询指定key下保存的hash是否存在指定字段:hexists key field
    hexists teacher name
    
    # 获取指定key下存储的hash表中的全部字段:hkeys  key
    hkeys teacher
    
    # 获取指定key下存储的hash表中的全部值:hvals  key
    hvals teacher
    
    列表
    # 在列表末尾添加一个或多个值,返回列表长度
    # rpush key value [value1,value2,...]
    rpush lst Tom Tony Jason
    
    # 获取列表中指定范围内的元素:lrange key start end
    lrange lst 0 -1
    
    # 获取列表长度:llen key
    llen lst
    
    # 通过索引获取列表中的元素:lindex key index
    lindex lst 1 # Tony
    
    # 通过索引设置指定元素的值:lset key index newvalue
    lset lst 2 Mike
    
    # 在列表的某个元素之前或之后插入元素,若执行成功返回列表的长度
    # 若该元素不存在,不执行任何操作
    # 若key不存在, key被视为空列表,不执行任何操作
    # linsert key before|after pivot value
    linsert lst after Tom Wang
    
    # 将一个或多个值插入到列表的表头
    # 如果有多个值,那么各个值按从左到右的顺序依次插入到表头
    # 如果列表不存在,会创建一个新的列表并执行lpush操作
    # lpush key value [value ...]
    lpush lst a b c
    
    # 移除并返回列表的头元素:LPOP key
    lpop lst
    
    # 移除并返回列表的头元素:RPOP key
    rpop lst
    
    有序集合
    # 向有序集合添加一个或多个成员,或更新已存在成员分数
    # ZADD key score member [[score member] [score member] ...]
    zadd links 1 baidu 2 bing 3 sina
    
    # 获取有序集合的成员数:zcard key
    zcard links
    
    #  获取成员分数值:zscore key member
    zscore links sina
    
    # 返回有序集指定区间内的成员及分数
    # ZRANGE key start stop [WITHSCORES]
    zrange links 0 1
    
    # 移除有序集中的一个或多个成员,不存在的成员将被忽略
    # ZREM key member [member ...]
    zrem links sina
    
    # 向有序集合指定的成员增加分数
    # ZINCRBY key increment membe
    zincrby links 5 baidu
    
    连接池

    为了节省资源,减少多次连接损耗,连接池作用相当于总揽多个客户端与服务器的连接,当新的客户端需要连接时,只需要到连接池里获取一个连接即可,实际上只是一个连接共享给多可客户端

    import redis
    # 声明连接池
    pool =redis.ConnectionPool(host="localhost",port=6379,decode_responses=True)
    # 建立连接
    r1 = redis.Redis(connection_pool=pool)
    r2 = redis.Redis(connection_pool=pool)
    # 执行redis命令操作
    r1.set('apple','a')
    r2.set('banana','b')
    # 打印连接信息(一致)
    print(r1.get('apple'))
    print(r2.get('banana'))
    
    管道

    一般情况下,执行一条命令必须等待结果才能执行下一条,管道用于在一次请求在执行多次指令,在python中管道可以代替事务

    相关文章

      网友评论

          本文标题:Redis基本操作

          本文链接:https://www.haomeiwen.com/subject/yjifsctx.html