Redis学习 - 基础篇
一. 简介
Redis 是一个高性能的key-value数据库,常用的数据类型如下:string,list,set,zset,hash
二. 安装
Widows和Linux下如何安装Redis-CSDN博客
三. 常用命令
配置及数据库操作
| 命令 | 说明 | 
|---|---|
| config get [config_name] | 获取指定的配置信息( * 查看全部) | 
| info [info_name] | 查看redis服务器信息 | 
| select [db_number] | 切换到指定数据库(0 - 15) | 
key的操作
| 命令 | 说明 | 
|---|---|
| set [key] [value] | |
| del [key] | |
| rename [key] [newKeyName] | 改名 | 
| keys [pattern] | |
| exists [key] | |
| expire [key] [seconds] | 设置key的过期时间 | 
| persist [key] | 取消key的过期时间 | 
| ttl [key] | 查看key的过期时间(-1表示永久,-2表示不存在) | 
| move [key] [db] | 移动 key 去别的库 | 
| type [key] | 查看key的类型 | 
四. 常用数据类型
1. String
| 命令 | 说明 | 
|---|---|
| 增 | |
| set [key] [value] | |
| setnx [key] [value] | 不存在时才创建 | 
| setex [key] [seconds] [value] | 设指定过期时间的字符串键值对 | 
| mset [key1] [value1] … | 批量增加/修改 | 
| 删 | |
| del [key] | |
| 改 | |
| mset [key1] [value1] … | 批量增加/修改 | 
| append [key] [append_value] | 追加内容 | 
| incr [key] | 将value增加1 | 
| decr [key] | 将value减少1 | 
| 查 | |
| get [key] | |
| msget [key1] … | 批量获取 | 
| getrange [key] [start] [end] | 获取截断字符串 | 
| strlen [key] | 返回对应 value 的长度 | 
2. Hash
Hash用来存对象,命令类似于String : h + XXX
| 命令 | 说明 | 
|---|---|
| 增 | |
| hset [key] [field] [value] | |
| hsetnx [key] [field] [value] | 不存在时才插入 | 
| hmset [key] [field1] [value1] … | 批量插入 | 
| 删 | |
| hdel [key] [field] … | 批量删除field | 
| 查 | |
| hget [key] [field] | 获取指定的field的value值 | 
| hgetall [key] | 获取所有field的value值 | 
| hvals [key] | 获取所有的value值 | 
| hlen [key] | 获取field的数量 | 
| hkeys [key] | 获取所有field值 | 
3. List
双头队列
| 命令 | 说明 | 
|---|---|
| 增 | |
| lpush [key] [value1] … | 队头插入 | 
| rpush [key] [value1] … | 队尾插入 | 
| 删 | |
| lpop [key] | 队头出 | 
| rpop [key] | 队尾出 | 
| lrem [key] [count] [value] | 从队头到队尾删除指定数量的值为value的元素(0表示全部删除,否则删除的数量为绝对值的count) | 
| 改 | |
| lset [key] [index] [newValue] | 将指定index的值改为newValue | 
| 查 | |
| lindex [key] [index] | 获取指定索引的元素(队头为0) | 
| lrange [key] [start] [end] | 从队头往队尾输出 | 
| llen [key] | 列表大小 | 
4. Set
类似于Java的HashSet<String>
| 命令 | 说明 | 
|---|---|
| 增 | |
| sadd [key] [value1] … | 单个/批量插入 | 
| 删 | |
| srem [key] [value1]… | 单个/批量删除 | 
| 查 | |
| sismember [key] [value] | 是否包含指定value | 
| smembers [key] | 遍历输出所有元素 | 
| scard [key] | 输出长度 | 
| 集合操作 | |
| sinter [key1] [key2] … | 取交集 | 
| sinterstore [key] [key1] [key2] … | 取后面集合的交集存到key所在set | 
| sdiff [key1] [key2]… | 取差集 | 
| sunion [key1] [key2]… | 取并集 | 
| sunionstore [key] [key1] [key2] … | 取后面集合的并集存到key所在set | 
5. Sorted Set
HashMap<String, Integer>
| 命令 | 说明 | 
|---|---|
| 增 | |
| zadd [key] [score1] [member1] … | 单个/批量插入 | 
| 删 | |
| zrem [key] [member1] … | 单个/批量删除 | 
| zremrangebyscore [key] [min] [max] | 删除指定分数区间的元素 | 
| zremrangebyrank [key] [start] [end] | 删除指定索引范围的元素(按升序排名的) | 
| 改 | |
| zincrby [key] [increment] [member] | 给member加上increment分 | 
| 查 | |
| zrange [key] [start] [end] [withscores] | 按分数升序输出指定索引区间的元素 (加了withscores分数也输出) | 
| zrevrange [key] [start] [end] [withscores] | 按分数降序输出指定索引区间的元素(加了withscores分数也输出) | 
| zrangebyscore [key] [min] [max] [withscores] | 按照分数区间升序输出元素 | 
| zcount [key] [min] [max] | 获取指定分数区间的元素数量 | 
| zrank [key] [member] | 获取指定member的索引(按照分数升序的排名 - 1) | 
| zrevrank [key] [member] | 获取指定member的索引(按照分数降序的排名 - 1) | 
| zcard [key] | 获取长度 | 
五. 消息的订阅发布
开两个客户端(两个cmd窗口,执行redis-cli.exe),一个作为订阅方,一个作为发布方
订阅方
SUBSCRIBE redisChat
发布方
publish redisChat "hello"
下图为执行结果,左边为订阅方,右边为发布方:
 
| 命令 | 说明 | 
|---|---|
| pubscribe [pattern1] … | 订阅单个/多个频道 | 
| UNSUBSCRIBE [pattern1]… | 退订单个/多个频道 | 
| publish [pattern] [message] | 将message发布到pattern频道 | 
| pubsub channels | 查看订阅的频道 | 
六. 事务
和数据库事务差不多
| 命令 | 说明 | 
|---|---|
| multi | 标记事务开始 | 
| exec | 执行事务中的所有命令 | 
| discard | 取消事务 | 
| watch [key]… | 下次事务执行前,如果这些key的内容被修改了,则打断事务 | 
| unwatch | 取消所有的watch |