第2章 Redis基本操作
1. 数据库连接操作
命令 |
说明 |
举例 |
备注 |
select <dbid> |
切换数据库 |
select 1:切换到1号库 |
开启redis服务后,一共有16(0-15)个库,默认在0号库 |
flushdb |
清空当前库 |
|
|
dbsize |
查看数据库数据个数 |
|
|
flushall |
通杀全部库 |
|
|
2. 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不存在时能够执行成功,否则失败 |
3. 常用五大数据类型
Redis中的数据以键值对(key-value)为基本存储方式,其中key都是字符串,这里探讨数据类型都是探讨value的类型。
key |
value | |
string |
字符串 | |
list |
可以重复的集合 | |
set |
不可以重复的集合 | |
hash |
类似于Map<String,String> | |
zset(sorted set) |
带分数的set |
4. 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 |
设置键值的同时,设置过期时间,单位秒 |
5. 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 |
6. set操作
set是无序的,且是不可重复的。
SADD key member [member ...] |
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。 |
SMEMBERS key |
取出该集合的所有值 |
SISMEMBER key value |
判断集合<key>是否为含有该<value>值,有返回1,没有返回0 |
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 |
7. hash操作
Hash数据类型的键值对中的值是“单列”的,不支持进一步的层次结构。
key |
field:value |
"k01":"v01" "k02":"v02" "k03":"v03" "k04":"v04" "k05":"v05" "k06":"v06" "k07":"v07" |
key |
value(hash) | |
stu |
stu_id |
10 |
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 |
8. 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,Linux,大数据,尚硅谷,IT)