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
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: