一. 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 常用命令