简介
基于内存的key-value数据库
基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次
支持数据持久化
value可以是string,hash, list, set, sorted set (Redis 5 支持Stream 流类型)
cmd访问redis
// 远程访问无密码
redis-cli -h 127.0.0.1 -p 6379
// 远程访问加密码
redis-cli -h 127.0.0.1 -p port -a password
//本地访问
redis-cli
Redis 连接命令
// 验证密码是否正确
auth password
// 打印字符串
echo message
// 查看服务是否运行
ping
//关闭当前连接
quit
//切换到指定的数据库 redis默认由16个库(0~15号). 且默认使用的是0号库
select index
// 指定第一个库
select 0
//
Redis keys命令
// 获取所有的key
keys *
// 随机key
randomkey
// 类型
type key
// 设置key val
set key val
// 获取key
get key
// 批量设置
mset key1 value1 key2 value2 key3 value3
// 批量获取key
mget key1 key2 key3
//删除key
del key
//判断key是否存在 1 存在 0 不存在
exists key
//为key设置过期时间
expire key seconds
// 用时间戳的方式给key设置过期时间
expire key timestamp
//设置key的过期时间以毫秒计
pexpire key seconds
//移除key的过期时间
persist key
// 以秒为单位,返回给定key的剩余生存时间 -1 没有设置过期时间 -2 有设置过期时间,而且key已经过期
ttl key
// 毫秒为单位返回key的剩余过期时间
pttl key
// 修改key的名称
rename key newkey
Redis字符串命令
// 返回key中字符串值的子字符
getrange key start end
//将给定key的值设为新值,并返回key的旧值
getset key value
//对key所储存的字符串值,获取指定偏移量上的位
getbit key offset
// 对key所是存储的字符串值,设置或清除指定偏移量上的位
setbit key offset value
// 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)
setex key seconds value
// key不存在则插入
setnx key value
// 从index开始替换value
setrange key index value
//返回 key 所储存的字符串值的长度
strlen key
// 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
msetnx key value [key value ...]
//该命令和 SETEX 命令相似,以毫秒为单位设置 key 的生存时间,而 SETEX 命令以秒为单位
psetex key milliseconds value
// 将 key 中储存的数字值+1 并返回最终值
incr key
// 将 key 所储存的值加上指定的增量值(value)并返回最终值
incrby key value
// 将 key 所储存的值加上指定的浮点增量值(value)并返回最终值
incrbyfloat key value
//将 key 中储存的数字值减一 并返回最终值
decr key
// key 所储存的值减去给定的减量值(value)
decrby key value
//果 key 已经存在并且是一个字符串, APPEND 命令将 指定value 追加到改 key 原来的值(value)的末尾,类似于java中Stringbuffer中的append
append key value
Redis hash 命令
// 将哈希表 key 中的字段 field 的值设为 value
hset key field value
//只有在字段 field 不存在时,设置哈希表字段的值
hsetnx key field value
// 获取存储在哈希表中key指定字段的值
hget key field
//获取在哈希表中指定 key 的所有字段和值
hgetall key
//删除一个或多个哈希表字段
hdel key field1 [field2]
//查看哈希表 key 中,指定的字段是否存在
hexists key field
// 为哈希表 key 中的指定字段的整数值加上增量 increment ,并返回最终值
hincrby key field increment
//为哈希表 key 中的指定字段的浮点数值加上增量 increment
hincrbyfloat key field increment
//获取所有哈希表中的字段
hkeys key
//获取哈希表中字段的数量
hlen key
//获取所有给定字段的值
hmget key field1 [field2]
// 同时将多个 field-value 对设置到哈希表 key 中
hmset key field1 value1 [field2 value2 ]
// 获取哈希表中所有值
hvals key
// 迭代哈希表中的键值对 如 hscan map1 1 match * count 100
HSCAN key cursor [MATCH pattern] [COUNT count]
Redis 列表命令
// 将一个或多个值左插入到列表头部 如:lpush list1 a b c d e f
lpush key value1 [value2]
// 在列表中右添加一个或多个值 如: rpush list1 g h i j
rpush key value1 [value2]
// 获取列表指定范围内的元素 如:lrange list1 0 10
lrange key start stop
// 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
blpop key1 [key2 ] timeout
//移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
// brpop key1 [key2 ] timeout
//从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 如:brpoplpush list1 list2 1000
brpoplpush source destination timeout
//通过索引获取列表中的元素
lindex key index
// 在列表的元素前或者后插入元素 如:linsert list1 before e li
linsert key BEFORE|AFTER pivot value
// 获取列表长度
llen key
// 移出并获取列表的第一个元素
lpop key
//移除并获取列表最后一个元素
rpop key
//将一个值插入到已存在的列表头部
lpushx key value
// 移除列表元素
lrem key count value
//通过索引设置列表元素的值
lset key index value
//对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
ltrim key start stop
// 移除列表的最后一个元素,并将该元素添加到另一个列表表头并返回
rpoplpush source destination
//
Redis 集合 Set 命令
//向集合添加一个或多个成员
sadd key member1 [member2]
//获取集合的成员数
scard key
// 返回给定所有集合的差集
sdiff key1 [key2]
// 返回给定所有集合的差集并存储在 destination 中
sdiffstore destination key1 [key2]
//返回给定所有集合的交集
sinter key1 [key2]
// 返回给定所有集合的交集并存储在 destination 中
sinterstore destination key1 [key2]
//判断 某 元素是否是集合 key 的成员
sismember key member
// 返回集合中的所有成员
smembers key
//将 member 元素从 source 集合移动到 destination 集合
smove source destination member
// 移除并返回集合中的一个随机元素
spop key
//返回集合中一个或多个随机数
srandmember key [count]
// 移除集合中一个或多个成员
serm key member1 [member2]
// 所有给定集合的并集存储在 destination 集合中
sunion key1 [key2]
// 所有给定集合的并集存储在 destination 集合中
sunionstore destination key1 [key2]
// 迭代集合中的元素 如:sscan set1 1 match ma* count 10 ;sscan set1 0 match ma* count 100
SSCAN key cursor [MATCH pattern] [COUNT count]
Redis 有序集合命令
//向有序集合添加一个或多个成员,或者更新已存在成员的分数
zadd key score1 member1 [score2 member2]
//获取有序集合的成员数
zcard key
//计算在有序集合中指定区间分数的成员数
zcount key min max
// 有序集合中对指定成员的分数加上增量 increment
zincrby key increment member
// 计算给定的一个或多个有序集的交集并将累加结果集存储在新的有序集合 key 中
ZINTERSTORE destination numkeys key [key ...]
如:
/**
*# 有序集 mid_test
redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
(integer) 1
# 另一个有序集 fin_test
redis 127.0.0.1:6379> ZADD fin_test 88 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
(integer) 1
# 交集
redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
(integer) 3
# 显示有序集内所有成员及其分数值
redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES
1) "Han Meimei"
2) "145"
3) "Li Lei"
4) "158"
5) "Tom"
6) "199"
*/
//有序集合中计算指定字典区间内成员数量
zlexcount key min max
// 通过索引区间返回有序集合成指定区间内的成员
zrange key start stop [WITHSCORES]
// 通过字典区间返回有序集合的成员
zrangebylex key min max [LIMIT offset count]
// 通过分数返回有序集合指定区间内的成员
zrangebyscore key min max [WITHSCORES] [LIMIT]
// 返回有序集合中指定成员的索引
zrank key member
// 移除有序集合中的一个或多个成员
zrem key member [member ...]
// 移除有序集合中给定的字典区间的所有成员
zremrangebyrank key start stop
// 移除有序集合中给定的分数区间的所有成员
zremrangebyscore key min max
// 返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrange key start stop [WITHSCORES]
// 返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrangebyscore key max min [WITHSCORES]
// 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zrevrank key member
// 返回有序集中,成员的分数值
zscore key member
// 计算给定的一个或多个有序集的并集,并存储在新的 key 中
zunionstore destination numkeys key [key ...]
// 迭代有序集合中的元素(包括元素成员和元素分值) 如: zscan zset4 0 match * count 10
zscan key cursor [MATCH pattern] [COUNT count]
Redis 发布订阅命令
// 订阅一个或多个符合给定模式的频道。
psubscribe pattern [pattern ...]
// 查看订阅与发布系统状态
pubsub subcommand [argument [argument ...]]
//将信息发送到指定的频道
publish channel message
//退订所有给定模式的频道。
punsubscribe [pattern [pattern ...]]
// 订阅给定的一个或多个频道的信息
subscribe channel [channel ...]
// 指退订给定的频道
unsubscribe [channel [channel ...]]
示例:
redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 1
# 订阅者的客户端会显示如下消息
1) "message"
2) "redisChat"
3) "Redis is a great caching technique"
Redis 事务命令
// 取消事务,放弃执行事务块内的所有命令。
discard
//执行所有事务块内的命令。
exec
//标记一个事务块的开始。
multi
//取消 WATCH 命令对所有 key 的监视。
unwatch
//监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
watch key [key ...]
Redis 脚本命令
// 执行 Lua 脚本。
EVAL script numkeys key [key ...] arg [arg ...]
// 执行 Lua 脚本
EVALSHA sha1 numkeys key [key ...] arg [arg ...]
// 查看指定的脚本是否已经被保存在缓存当中
SCRIPT EXISTS script [script ...]
// 从脚本缓存中移除所有脚本。
SCRIPT FLUSH
// 杀死当前正在运行的 Lua 脚本
SCRIPT KILL
// 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本
SCRIPT LOAD script
Redis 服务器命令
// 异步执行一个 AOF(AppendOnly File) 文件重写操作
BGREWRITEAOF
// 在后台异步保存当前数据库的数据到磁盘
BGSAVE
// 关闭客户端连接
CLIENT KILL [ip:port] [ID client-id]
// 获取连接到服务器的客户端连接列表
CLIENT LIST
// 获取连接的名称
CLIENT GETNAME
// 在指定时间内终止运行来自客户端的命令
CLIENT PAUSE timeout
// 设置当前连接的名称
CLIENT SETNAME connection-name
// 获取集群节点的映射数组
CLUSTER SLOTS
// 获取 Redis 命令详情数组
COMMAND
// 获取 Redis 命令总数
COMMAND COUNT
// 获取给定命令的所有键
COMMAND GETKEYS
// 返回当前服务器时间
TIME
// 获取指定 Redis 命令描述的数组
COMMAND INFO command-name [command-name ...]
// 获取指定配置参数的值
CONFIG GET parameter
// 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
CONFIG REWRITE
// 修改 redis 配置参数,无需重启
CONFIG SET parameter value
// 重置 INFO 命令中的某些统计数据
CONFIG RESETSTAT
// 返回当前数据库的 key 的数量
DBSIZE
// 获取 key 的调试信息
DEBUG OBJECT key
// 让 Redis 服务崩溃
DEBUG SEGFAULT
// 删除所有数据库的所有key
FLUSHALL
// 删除当前数据库的所有key
FLUSHDB
// 获取 Redis 服务器的各种信息和统计数值
INFO [section]
// 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
LASTSAVE
// 实时打印出 Redis 服务器接收到的命令,调试用
MONITOR
// 返回主从实例所属的角色
ROLE
// 同步保存数据到硬盘
SAVE
// 异步保存数据到硬盘,并关闭服务器
SHUTDOWN [NOSAVE] [SAVE]
// 将当前服务器转变为指定服务器的从属服务器(slave server)
SLAVEOF host port
// 管理 redis 的慢日志
SLOWLOG subcommand [argument]
// 用于复制功能(replication)的内部命令
SYNC
结束语
常用的都已经在上面了,如有不详细之处,可具体参考Redis教程









网友评论