redis简单介绍

https://redis.io/
  • 什么是redis?

    remote dictionary server, 远程字典服务. 顾名思义, redis的基础存储方式是键对值, 是一种常用的非关系型数据库.

  • redis的特点

    • 内存操作, 相对于传统数据库从硬盘上读取数据速度, 快了一个数量级.
    • redis服务是单线程工作模式, 不会产生一般的并发问题.

      在我们使用多线程或者多进程去进行一般IO操作会发生读写冲突. 如果我们的多线程和多进程程序去读取redis消息队列当中的值时, 由于redis是单线程工作模式, 读事件和写事件都会按顺序执行, 避免了并发问题.

redis的安装

  • 服务端

    • windows

      https://github.com/microsoftarchive/redis
    • ubuntu

      apt-get install redis-server
    • mac

      brew install redis
  • 客户端

    • windows

      • redis-desktop
    • ubuntu

      # 没有图形界面
      apt-get install redis-cli
    • mac

      medis
    • python连接

      pip install redis
      import redis
      
      # 指定使用的database
      redis_con = redis.Redis(host='localhost', port=6379, db=2)

redis的数据类型和CRUD

通过redis-cli命名进行连接

redis-cli -h localhost -p 6379

# 选择使用的数据库
C:\Users\TuNan>redis-cli
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]>

# 查看当前库下所有的key
127.0.0.1:6379[2]> keys *
  • String

    • Create

      set key value
    • Retrieve

      get key
    • Update

      set key  value
    • Delete

      del key
  • Hash

    • Create

      hset 变量名 key value
    • Retrieve

      hget 变量名 key
    • Update

      hset 变量名 key value
    • Delete

      hdel 变量名 key
  • List

    • Create

      lpush 变量名 value
    • Retrieve

      • 通过索引取值

        lindex 变量名 索引值
        
        lindex 'list_test' 1
      • 通过索引取一定范围的值

        lrange 变量名 start end
        
        lrange 'list_test' 0 2
    • Update

      linsert 变量名 before[after] pivot value
      
      linsert 'list_test' before 'a' 'b'
    • Delete

      • rpop

        从右侧, 也就是list的末尾移除一个元素并返回

        rpop 'list_test'
      • lpop

        从左侧, 也就是头部移除一个元素并返回

      • lrem

        删除一定数目的元素

        lrem 变量名 删除个数,  删除元素
  • Set

    • Create

      sadd 变量名 value
    • Retrieve

      • 获取集合中的所有成员

        smembers 变量名
      • 判断当前元素是否在集合当中

        sismember 变量名 value
        sismember 'set_test' 2
      • 返回随机数

        srandmember 变量名 随机返回的数量
        srandmember 'set_test' 2
    • Update

    • Delete

      spop 变量名
  • Zset

    有序集合

    可以通过有序集合完成一个复杂的优先级队列
    • create

      zadd 变量名 分数 value
    • Retrieve

      • 返回当前成员数

        zcard 'zset_test'
      • 获取一定分数区间的成员数

        zcount 变量名 min_score max_score
      • 通过一定分数区间获取值

        zrangebyscore 变量名 min_score max_score
        
        zrangebyscore 'zset_test' 2 1
    • Update

      • 加分

        zincrby 变量 加分值 value
        
        zincrby 'zset_test' 1 'b'
    • Delete

      • 根据排名移除成员

        zremrangebyrank 变量名 start stop
        
        zremrangebyrank 'zset_test' 1 2
      • 根据分数移除成员

        zremrangebyscore 变量名 min_score max_score
        
        zremrangebyscore 'zset_test' 2 2
Last modification:September 21, 2022
如果觉得我的文章对你有用,请随意赞赏