Redis 必知必会之 API

一些废话#

1.Redis 是一个开源、基于键值的存储系统、多种数据结构、功能丰富。

2.Redis 支持持久化,断电不丢数据,对数据的更新异步保存到磁盘上。

3.Redis 支持字符串、哈希、列表、集合、有序集合、位图、超小内存唯一计数、地理信息定位。

4.Redis 支持多语言客户端,支持发布订阅,Lua 脚本,事务,不依赖外部库,单线程模型,支持主从复制,高可用,分布式。

5.Redis 典型使用场景有缓存系统、计数器,消息队列系统、排行榜、社交网络、实时系统。

6. 启动方式分为

  • 最简启动 redis-server
  • 动态参数 redis-server –port 6380
  • 配置文件 redis-server configPath

7. 验证是否启动

  • ps -ef | grep redis
  • netstat -antpl | grep redis
  • redis-cli -h ip -p port ping

8.Redis 客户端返回值有状态回复、错误回复、整数回复、字符串回复、多行字符串回复。
9. 常用配置

  • daemonize 是否是守护进程
  • port 对外端口
  • logfile 日志
  • dir 工作目录

10. 一次只运行一条命令,拒绝长慢命令,不要轻易执行 keys、flushdb、flushall、show lua script 等。

11. 其实 redis 不是单线程 例如如下 API fysnc file descriptor、close file descriptor

Redis API#

1. 通用命令

  • keys: 计算所有的键 O (n)
  • dbsize: 当前数据库的 key 的数量
  • exists keys: key 是否存在
  • del:删除 key
  • expire key seconds: 设置过期时间
  • type key: 获取 key 的数据类型
  • ttl key: 查看 key 的剩余过期时间
  • persist key: 去掉 key 的过期时间

2. 列表类型

  • rpush key value1 value2 valueN O(1-n)
  • lpush key value1 value2 valueN O(1-n)
  • linsert key before|after value newValue O(n)
  • lpop key
  • rpop key
  • lrem key count value (删除 count 个 value 元素) 0 (n)
  • ltrim key start end (按照索引范围修剪列表) o (n)
  • lrange key start end (包含 end) (获取列表制定索引范围)
  • lindex key index o(n)
  • llen key
  • lset key index newValue
  • blpop key timeout (lpop 的阻塞版本)
  • brpop key timeout (rpop 的阻塞版本)
  • lpush + lpop = stack
  • lpush + rpop = queue
  • lpush + ltrim = Capped Collection
  • lpush + brpop = Message Queue

3. 字符串类型

  • 场景:缓存、计数器、分布式锁
  • get key
  • set key value
  • incr key
  • decr key
  • incrby key k
  • decrby key k
  • setnx key value 值不存在才设置
  • set key value xx 存在才设置
  • mget 批量获取 O (n)
  • mset 批量设置 O (n)
  • getset key newvalue 设置新值返回旧值
  • append key value 将新值追加到旧值
  • strlen 获取值的长度
  • incrbyfloat key 3.5 增加对应 key 3.5
  • getrange key start end
  • setrange key start value

4. 集合类型

  • 无序 无重复 支持集合间操作
  • sadd key element (添加)
  • srem key element (删除)
  • scard key
  • sismember key element
  • srandmember key count (随机选出 count 个元素)
  • spop key (随机弹出一个元素)
  • smembers key (取出所有元素 小心使用)
  • sscan (遍历集合)
  • sdiff 差集
  • sinter 交集
  • sunion 并集
  • sadd = 打标签
  • spop/srandmember = 随机
  • sadd + sinter = Social Graph

5. 有序集合类型

  • zadd key score element O(logN)
  • zrem key element (删除)
  • zscore key element
  • zincrby key increScore element (增加分数)
  • zcard key (返回个数)
  • zrange key start end withscores (获取元素) (O (logN + m))
  • zrangebyscore key minScore maxScore
  • zcount key minScore maxScore (O(logN + m))
  • zremrangebyrank key start end (删除指定排名内的升序元素)
  • zremrangebyscore key start end (删除指定分数内的升序元素)
  • zrevrank
  • zrevrange
  • zrevrangebyscore
  • zinterstore
  • zunionstore

6. 哈希类型

  • hget key filed
  • hset key field value
  • hdel key field
  • hgetall key O(n)
  • hexists key field
  • hlen key 获取字段数量
  • hmget key field1 field2 O(n)
  • hmset key field1 value1 field2 value2 O(n)
  • hincrby key field value
  • hvals key 返回 hash key 对应所有 field 的 value O (n)
  • hkeys key 返回 hash key 对应的所有 field O (n)
  • hsetnx key field value
  • hincrby key field intCounter
  • hincrbyfloat key field floatCounter

image.png

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。