一. Redis 连接
1. 进入redis环境
docker run -d -p 6379:6379 --name redis redis:latest
docker exec -it redis redis-cli
2. 检测 Redis 是否正常
127.0.0.1:6379> ping
PONG
3. 退出连接
127.0.0.1:6379> quit
[root@VM-4-12-centos data]#
二. redis内容
1. key 操作命令
输入命令 |
含义 |
keys * |
查看所有的key |
dbsize |
获取总key数 |
exists key |
查询键是否存在 |
del key |
删除key |
type key |
查询键类型(string,set…) |
ttl key |
查询key的生命周期(秒) |
pttl key |
查询key的生命周期(毫秒) |
expire key |
设置过期时间(秒) |
pexpire key |
设置过期时间(毫秒) |
persist key |
设置永不过期 |
rename key newkey |
更改键名称 |
2. 字符串string 操作命令
输入命令 |
含义 |
举例 |
返回值 |
set key value |
存放键值 |
set java1 test |
OK |
get key |
获取键值 |
get java1 |
“test” |
mset key1 value1 key2 value2 |
批量存放 |
mset java1 1 java2 2 java3 3 |
OK |
mget key1 key2 |
批量获取 |
mget java1 java2 |
1) “test” 2) “2” |
strlen key |
获取值长度 |
strlen java1 |
4 |
append key value |
追加内容 |
append java1 test2 |
(integer) 6 |
getrange key start end |
获取部分内容 |
getrange java1 0 3 |
“1tes” |
3. 无序集合Set 操作命令
相当于 Java 语言里面的 HashSet
语法 |
含义 |
举例 |
返回值 |
sadd key [member…] |
存储值 |
sadd langs java php c++ go ruby python kotlin java |
(integer) 7 |
smembers key |
获取所有元素语法 |
smembers langs |
1) "php"2) "kotlin"3)"c++"4) "go"5) "ruby"6) "python"7) “java” |
srandmember key count |
随机获取元素语法 |
srandmember langs 3 |
1)"kotlin"2) "python"3) “c++” |
sismember key member |
判断集合是否存在元素 |
sismember langs go |
(integer) 1 |
scard key |
获取集合元素个数 |
scard langs |
(integer) 7 |
srem key [member…] |
删除集合元素 |
srem langs java |
(integer) 1 |
spop key [count] |
弹出元素 |
spop langs 2 |
1) “python” 2) “go” |
4. 有序集合zset
类似于 Java 的 SortedSet 和 HashMap 的结合体
和列表的区别:
1、列表使用链表实现,两头快,中间慢。有序集合是散列表和跳跃表实现的,即使读取中间的元素也比较快。
2、列表不能调整元素位置,有序集合能。
3、有序集合比列表更占内存。
输入命令 |
含义 |
举例 |
返回值 |
`zadd key [NX |
XX] [CH] [INCR] score member [score member …]` |
存储值 |
zadd footCounts 16011 tid 20082 huny 2893 nosy |
zscore key member |
获取元素分数 |
zscore footCounts tid |
“16011” |
zincrby key increment member |
增加指定元素分数 |
zincrby footCounts 2000 tid |
“18011” |
zcard key |
获取集合元素个数 |
zcard footCounts |
3 |
zrem key member [member ...] |
删除指定元素 |
zrem footCounts huny |
1 |
zrank key member |
获取元素排名 |
zrank footCounts tid |
2 |
zrangebyscore key min max [WITHSCORES] [LIMIT offset count] |
获取指定分数范围排名语法 |
zrangebyscore footCounts 3000 30000 withscores limit 0 1 |
1) "tid"2) “16011” |
zcount key min max |
获取指定范围分数个数 |
zcount footCounts 2000 20000 |
2 |
5. 列表操作命令list
Redis
中的 list
和 Java
中的 LinkedList
很像,底层都是一种链表结构, list
的插入和删除操作非常快,时间复杂度为 0(1),不像数组结构插入、删除操作需要移动数据。
输入命令 |
含义 |
举例 |
返回值 |
lpush key [value …] |
左端存值语法 |
lpush list lily sandy |
2 |
rpush key [value …] |
右端存值语法 |
rpush list tom kitty |
4 |
lset key index value |
索引存值语法 |
lset list 3 uto |
OK |
lpop key |
左端弹出语法 |
lpop list |
“broad” |
rpop key |
右侧弹出语法 |
rpop list |
“kitty” |
llen key |
获取元素个数 |
llen list |
2 |
lrange key start top |
获取列表元素 |
lrange list 0 -1 |
1) “sandy” 2) "lily"3)“uto” |
index key index |
索引获取语法 |
lindex list 2 |
"ketty " |
lrem key count value |
根据值删除语法 |
lrem userids 0 111 //count=0 删除所有 |
2 |
ltrim key start stop |
范围删除语法 |
ltrim list 2 4 |
OK |
6. 散列表hash
Redis
中的 Hash
和 Java的 HashMap
更加相似, 都是 数组+链表
的结构,当发生 hash 碰撞时将会把元素追加到链表上,值得注意的是在 Redis
的 Hash
中 value
只能是字符串.
输入命令 |
含义 |
举例 |
返回值 |
hset key field value |
存放键值 |
hset user name javastack |
1 |
hmset key field value [field value …] |
2 |
hmset user name javastack age 20 address china |
4 |
hsetnx key field value |
不存在时语法 |
hsetnx user tall 180 |
0 |
hget key field |
获取字段值 |
hget key field |
“20” |
hmget key field [field …] |
获取多个字段值 |
hmget user name age address |
1) "javastack"2)"20"3) “china” |
hgetall key |
获取所有键与值语法 |
hgetall user |
1) "name"2) "javastack"3) "age"4) "20"5) "address"6) “china” |
hkeys key |
获取所有字段语法 |
127.0.0.1:6379> hkeys user |
1) "name"2) "address"3) "tall"4) “age” |
hvals key |
获取所有值语法 |
hvals user |
1) "javastack"2) "china"3) "170"4) “20” |
hexists key field |
判断字段是否存在 |
hexists user address |
1 |
hlen key |
获取字段数量 |
hlen user |
4 |
hincrby key field increment |
递增/减 |
hincrby user tall -10 |
170 |
hdel key field [field …] |
删除字段 |
hdel user age |
1 |
参考文档
- Redis 常用操作命令,非常详细!
- Redis基础系列短视频《2. Redis简单实战》、
- redis中文官网
- Redis 常用命令