Redis的基本操作
客户端登录
| 命令 | 说明 | 举例 | 备注 |
|---|---|---|---|
| redis-cli | 启动客户端 | redis-cli –p 端口号 连接指定的端口号 | 直接执行的话,默认端口号就是6379; |
| ping | 测试联通 | 回复pong 代表联通 | |
| exit | 退出客户端 | ||
| redis-cli shutdown | 停止服务器 | redis-cli -h 127.0.0.1 -p 6379shutdown 停止指定ip 指定端口号的服务器 | redis 是通过客户端发送停止服务器的命令 |
数据库连接操作
| 命令 | 说明 | 举例 | 备注 |
|---|---|---|---|
| select |
切换数据库 | 切换数据库select 1:切换到1 号库 | 开启redis 服务后,一共有16(0-15)个库,默认在0 号库 |
| flushdb | 清空当前库 | ||
| dbsize | 查看数据库数据个数 | ||
| flushall | 清空全部库 |
key 的操作
Redis 中的数据以键值对(key-value)为基本存储方式,其中key 都是字符串。
| 表达式 | 描述 |
|---|---|
| KEYS pattern | 查询符合指定表达式的所有key,支持*,?等 |
| TYPE key | 查看key 对应值的类型 |
| EXISTS key | 指定的key 是否存在,0 代表不存在,1 代表存在 |
| DEL key | 删除指定key |
| RANDOMKEY | 在现有的KEY 中随机返回一个 |
| EXPIRE key seconds | 为键值设置过期时间,单位是秒,过期后key 会被redis 移除 |
| TTL key | 查看key 还有多少秒过期,-1 表示永不过期,-2 表示已过期 |
| RENAME key newkey | 重命名一个key,NEWKEY 不管是否是已经存在的都会执行, 如果NEWKEY 已经存在则会被覆盖 |
| RENAMENX key newkey | 只有在NEWKEY 不存在时能够执行成功,否则失败 |
常用五大数据类型
Redis 中的数据以键值对(key-value)为基本存储方式,其中key 都是字符串,这里探讨数据类型都是探讨value
的类型。

String 操作
- String 类型是Redis 中最基本的类型,它是key 对应的一个单一值。
- 二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis 的string 可以包含任何数据,比如jpg
图片或者序列化的对象。 - Redis 中一个字符串值的最大容量是512M。
| SET key value | 添加键值对 |
|---|---|
| GET key | 查询指定key 的值 |
| APPEND key value | 将给定的value 追加到原值的末尾 |
| STRLEN key | 获取值的长度 |
| SETNX key value | 只有在key 不存在时设置key 的值 |
| INCR key | 指定key 的值自增1,只对数字有效 |
| DECR key | 指定key 的值自减1,只对数字有效 |
| INCRBY key num | 自增num |
| DECRBY key num | 自减num |
| MSET key1 value1 key2 value2… | 同时设置多个key-value 对 |
| MGET key1 key2 | 同时获取一个或多个value |
| MSETNX key1 value1 key2 value2 | 当key 不存在时,设置多个key-value 对 |
| GETRANGE key 起始索引结束索引 | 获取指定范围的值,都是闭区间 |
| SETRANGE key 起始索引value | 从起始位置开始覆写指定的值 |
| GETSET key value | 以新换旧,同时获取旧值 |
| SETEX key 过期时间value | 设置键值的同时,设置过期时间,单位秒 |
list 操作
在Java 中list 一般是单向链表,如常见的Arraylist,只能从一侧插入,
在Redis 中,list 是双向链表。可以从两侧插入。
可以简单理解为两端开口的,两端都可以进出。使用一个动画来演示。
常见操作:
- 遍历:遍历的时候,是从左往右取值;
- 删除:弹栈,POP;
- 添加:压栈,PUSH ;
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右
边)。它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
| LPUSH/RPUSH key value1 value2… | 从左边/右边压入一个或多个值头尾效率高,中间效率低 |
|---|---|
| LPOP/RPOP key | 从左边/右边弹出一个值,值在键在,值光键亡弹出=返回+删除 |
| LRANGE key start stop | 查看指定区间的元素,正着数:0,1,2,3,... 倒着数:-1,-2,-3,... |
| LINDEX key index | 按照索引下标获取元素(从左到右) |
| LLEN key | 获取列表长度 |
| LINSERT key BEFORE|AFTER value newvalue | 在指定value 的前后插入newvalue |
| LREM key n value | 从左边删除n 个value |
| LSET key index value | 把指定索引位置的元素替换为另一个值 |
| LTRIM key start stop | 仅保留指定区间的数据 |
| RPOPLPUSH key1 key2 | 从key1 右边弹出一个值,左侧压入到key2 |
set 操作
set 是无序的,且是不可重复的。
| SADD key member [member ...] | 将一个或多个member 元素加入到集合key 当中,已经存在于集合的member 元素将被忽略。 |
|---|---|
| SMEMBERS key | 取出该集合的所有值 |
| SISMEMBER key value | 判断集合 |
| SCARD key | 返回集合中元素的数量 |
| SREM key member [member ...] | 从集合中删除元素 |
| SPOP key [count] | 从集合中随机弹出count 个数量的元素,count 不指定就 弹出1 个 |
| SRANDMEMBER key [count] | 从集合中随机返回count 个数量的元素,count 不指定就 返回1 个 |
| SINTER key [key ...] | 将指定的集合进行“交集”操作 |
| SINTERSTORE dest key [key ...] | 取交集,另存为一个set |
| SUNION key [key ...] | 将指定的集合执行“并集”操作 |
| SUNIONSTORE dest key [key ...] | 取并集,另存为set |
| SDIFF key [key ...] | 将指定的集合执行“差集”操作 |
| SDIFFSTORE dest key [key ...] | 取差集,另存为set |
hash 操作
Hash 数据类型的键值对中的值是“单列”的,不支持进一步的层次结构。
| field:value | |
|---|---|
| "k01":"v01" | |
| "k02":"v02" | |
| key | "k03":"v03" |
| "k04":"v04" | |
| "k05":"v05" | |
| "k06":"v06" | |
| "k07":"v07" |
从前到后的数据对应关系
JSON
stu:{"stu_id":10,"stu_name":"tom","stu_age":30}
Java
public class Student {
private Integer stuId;//10
private String stuName;//"tom"
private Integer stuAge;//30
...
}
Student stu=new Student()’
stu.setStuId=10;
stu.setStuName=”tom”;
stu.setStuAge=30;
Redis hash
| key | value(hash) | |
|---|---|---|
| stu_id | 10 | |
| stu | stu_name | tom |
| stu_age | 30 |
常用操作:
| HSET key field value | 为key 中的field 赋值value |
|---|---|
| HMSET key field value [field value ...] | 为指定key 批量设置field-value |
| HSETNX key field value | 当指定key 的field 不存在时,设置其value |
| HGETALL key | 获取指定key 的所有信息(field 和value) |
| HKEYS key | 获取指定key 的所有field |
| HVALS key | 获取指定key 的所有value |
| HLEN key | 指定key 的field 个数 |
| HGET key field | 从key 中根据field 取出value |
| HMGET key field [field ...] | 为指定key 获取多个filed 的值 |
| HEXISTS key field | 指定key 是否有field |
| HINCRBY key field increment | 为指定key 的field 加上增量increment |
zset 操作
zset 是一种特殊的set(sorted set),在保存value 的时候,为每个value 多保存了一个score 信息。根据score
信息,可以进行排序。
这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可
以是重复了
| ZADD key [score member ...] | 添加 |
|---|---|
| ZSCORE key member | 返回指定值的分数 |
| ZRANGE key start stop [WITHSCORES] | 返回指定区间的值,可选择是否一起返回scores |
| ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
在分数的指定区间内返回数据,从小到大排列 |
| ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] |
在分数的指定区间内返回数据,从大到小排列 |
| ZCARD key | 返回集合中所有的元素的数量 |
| ZCOUNT key min max | 统计分数区间内的元素个数 |
| ZREM key member | 删除该集合下,指定值的元素 |
| ZRANK key member | 返回该值在集合中的排名,从0 开始 |
| ZINCRBY key increment value | 为元素的score 加上增量 |
努力学习java的Cherish

浙公网安备 33010602011771号