Redis数据库

  • Redis 是一个高性能的key-value数据库,属于NoSQL
    • NoSQL:not only sql
      • 泛指非关系型的数据库
      • 不支持SQL语法
      • nosql中存储的数据都是KV形式
      • 每种nosql数据库都有自己的api和语法,以及擅长的业务场景
      • NoSQL有:Mongodb,Redis,Hbase hadoop等
    • 和SQL数据库相比:
      • sql数据库适合用于关系特别复杂的数据查询场景,nosql反之
      • sql对事务的支持非常完善,而nosql基本不支持事务
  • 服务器端命令
    • 服务器端的命令为redis-server
    • 查看帮助⽂档redis-server --help
    • 指定加载的配置文件sudo redis-server /etc/redis/redis.conf
  • 客户端命令
    • 客户端的命令为redis-cli
    • 查看帮助⽂档redis-cli --help
    • 连接redis redis-cli
    • 切换数据库 select 2 数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
  • 数据结构
    • redis是key-value的数据结构,每条数据都是⼀个键值对
    • 键的类型是字符串
    • 值的类型分为五种:
      • 字符串string
      • 哈希hash
      • 列表list
      • 集合set
      • 有序集合zset
  • string
    • 增:
      • 设置键值:set key value 如 set name Liming
      • 设置键值及过期时间(以秒为单位)setex key seconds value 如setex name1 10 Zhangsan 设置键为name1值为Zhangsan的数据,10秒过期
      • 设置多个键值 mset key1 value1 key2 value2 ... 如 mset name1 Z1 name2 Z2 name3 Z3
      • 追加值 append key value 如 append name1 isz1 追加后为Z1isz1
      • 根据键取值 get key 如 get name1
      • 获取多个键的值 mget key1 key2 ... 如mget name1 name2 name3
    • 查找键
      • 查找所有键 keys * 支持正则
      • 判断键是否存在 exists key 如 exists name 如果存在返回1,不存在返回0
      • 查看键对应的value的类型 type key 如 type name
      • 删除键及对应的值 del key1 key2 ... 如 del name1 name2
      • 设置过期时间 expire key seconds 如 expire name3 10 设置name3过期时间为10s
      • 查看有效时间 ttl key 如 ttl name
    • 改:直接set key value
  • hash
    • 增:
      • 设置单个属性 hset key field value 如 hset user name Z1 意思设置键为user的属性name的值为Z1
      • 设置多个属性 hmset key field1 value1 field2 value2 ... 如 hmset user1 name Z2 age 19 为设置键为user1的name属性为Z2,age属性为19
    • 查:
      • 获取指定键所有的属性 hkeys key 如 hkeys user 注意是获取属性不是属性的值 这里得到name和age两个结果
      • 获取⼀个属性的值 hget key field 如 hget user name
      • 获取多个属性的值 hmget key field1 field2 ... 如 hmget user name age
      • 获取所有属性的值 hvals key 如 hvals user
      • 删除整个hash键及值,使⽤del命令 如 del user
      • 删除属性,属性对应的值会被⼀起删除 hdel key field1 field2 ... 如 hdel user1 name
  • list
      • 在左侧插⼊数据 lpush key value1 value2 ... 如lpush user1 19 Z1 即最新插入的数据在最前面,这里插入时Z1在19的前面
      • 在右侧插⼊数据 rpush key value1 value2 ... 和上面一样,此时会按插入先后顺序排序
      • 在指定元素的前或后插⼊新元素 linsert key before或after 现有元素 新元素 如linsert user1 befor 19 Bnew 此时Bnew插入到19前面
      • 查询列表⾥指定范围内的元素 lrange key start stop 如lrange user1 0 1
      • 设置指定索引位置的元素值 lset key index value 如 lset user1 1 New
      • 删除指定元素 lrem key count value 将列表中前count次出现的值为value的元素移除 如 lrem user2 2 a
        • count > 0: 从头往尾移除
        • count < 0: 从尾往头移除
        • count = 0: 移除所有
    • set
      • 特点
        • ⽆序
        • 元素为string类型
        • 元素具有唯⼀性
        • 无修改操作
        • sadd key member1 member2 ... 如 sadd name Z1 Z2 Z3 向键为name的集合中添加元素 Z1Z2Z3
        • 返回所有的元素 smembers key 如smembers name
        • 删除指定元素 srem key member 如 srem name Z1
  • zset
    • 特点
      • 有序集合
      • 元素为string类型
      • 元素具有唯⼀性
      • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
      • 没有修改操作
      • zadd key score1 member1 score2 member2 ... 如 zadd name1 1 Z1 2 Z2 4 Z3 3 Z4 结果排序为Z1 Z2 Z4 Z3
      • zrange key start stop 如 zrange name1 0 -1
      • 返回score值在min和max之间的成员 zrangebyscore key min max 这里包括min和max
      • 返回成员member的score值 zscore key member 如 zscore name1 Z1
      • 删除指定元素 zrem key member1 member2 ... 如 zrem name1 Z1
      • 删除权重在指定范围的元素 zremrangebyscore key min max
  • 与python交互
    - 安装redis pip install redis
    - 导入 from redis import StrictRedis

    from redis import StrictRedis
    def redis_sr():
      sr = StrictRedis(decode_responses=True)
      print(sr.keys())
      print(sr.type('user'))
      print(sr.hget(key='class',name='user'))
    if __name__ == "__main__":
      redis_sr()

转载于:https://www.cnblogs.com/being-a-tester/p/10447153.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值