您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
❤️ 2. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶
❤️ 3. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 4. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门
😁 5. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划
全网同名【码农飞哥】欢迎关注,个人VX: wei158556
前言
这一篇文章我们主要是来整理下Redis的一些常用命令。
基本命令
- 启动Redis
./src/redis-server redis.conf
- 连接Redis数据库
./src/redis-cli -h 127.0.0.1 -p 6379
- 切换数据库
redis中有16个数据库,分别是0~15库,默认操作的是0库,如果要切换数据库的话可以通过select命令切换。
select [dbId]
#切换到1库
select 1
- 查看当前数据库的key的数量
dbsize
- 清空当前库
flushdb
- 判断某个key是否存在
exists key
- 查看你的key是什么类型
type key
- 为给定的key设置过期时间
expire key seconds
#指定名为username的键的过期时间是10秒
例如:expire username 10
- 查看还有多少秒过期,-1表示永不过期,-2表示已过期
ttl key
字符串相关的操作命令
String 数据类型主要用在做缓存,计数器,分布式锁,分布式ID等等
- 设置一个字符串类型的值
set key value
例如: set testkey testvalue
- 获取字符串的值
get key
例如:get testkey
5. 删除指定的key的值
del key
例如:del testkey
- 不存在就插入(not exists),
存在的话就不会插入,这是Redis做分布式锁的基础命令
setnx key value
例如:127.0.0.1:6379> setnx username zhangsan
(integer) 1
- 递增
incr key
incrby key increment
例如:127.0.0.1:6379> incr age
- 递减
decr key
decrby key decrement
例如:
127.0.0.1:6379> decr age
(integer) 1
127.0.0.1:6379> decrby age 3
(integer) -2
hash(哈希)
Redis hash 是一个键值对集合,Redis hash是一个String类型的field和value的映射表,hash特别适合存储对象,例如SpringSession中的session信息,存储用户信息,用户主页访问量等等。
6. 设置单个field值
hset key field value
例如:HSET company:1 companyname alibaba
- 设置多个field值
hmset key field1 value1 [field2 value2 field3 value3 ......fieldn valuen]
例如:HMSET user:1 username zhangsna age 12
- 返回key中的field域的值
HGET key field
例如:
127.0.0.1:6379> HGET company:1 companyname
"alibaba"
- 返回key中的field1,field2,fieldN域的值
hmget key field1 field2 fieldN
例如:
127.0.0.1:6379> HMGET user:1 username age
1) "zhangsna"
2) "12"
- 返回key中,所有的域与其值
hgetall key
例如:
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "zhangsna"
3) "age"
4) "12"
- 删除键
hdel key field[field ....]
例如:127.0.0.1:6379> hdel company:1 companyname
(integer) 1
list列表
字符串列表,按照插入顺序,添加一个元素到列表的头部(左边)或者尾部(右边),可以用于微博关注人,微博时间轴列表
充当队列的原理
左侧入队列
stringRedisTemplate.opsForList().leftPush(key, value)
右侧出队列
stringRedisTemplate.opsForList().rightPop(key)
- 将一个或多个值插入到列表头部
lpush key value1 [value2]
例如:127.0.0.1:6379> lpush order 111 222
(integer) 2
- 获取列表指定范围内的数据
lrange key start stop
例如:127.0.0.1:6379> lrange order 0 1
1) "222"
2) "111"
- 移除列表元素
lrem key count value
例如:127.0.0.1:6379> lrem order 1 111
(integer) 1
- 通过索引设置元素列表的值
lset key index value
例如:127.0.0.1:6379> lset order 0 123
OK
- 移除并获取列表最后一个元素
rpop key
例如:127.0.0.1:6379> rpop order
"123"
- 在列表尾部添加一个或者多个元素
rpush key value1 [value2]
例如:127.0.0.1:6379> rpush student zhangsan lisi wanger
(integer) 3
set 集合
set 集合是String类型的无序集合,集合是通过哈希表实现的。所以添加,删除,查找的复杂度都是O(1)。set 集合一般用于,赞,踩,标签等场景
18. 添加一个元素到集合中(集合中的元素无序并且唯一)
sadd key member [member ...]
例如: 127.0.0.1:6379> sadd myset test
(integer) 1
- 查看集合中所有的元素
smembers key
例如:127.0.0.1:6379> smembers myset
1) "test"
- 删除结点中指定的元素
srem key member [member ...]
例如:127.0.0.1:6379> srem myset test
(integer) 1
- scard: 返回集合元素的数量
scard key
例如:127.0.0.1:6379> scard key
(integer) 0
- smove: 将一个集合的元素转移到另一个集合中
smove source destionation member
例如:
127.0.0.1:6379> smembers myset
1) "test1"
127.0.0.1:6379> smembers myset1
(empty list or set)
127.0.0.1:6379> smove myset myset1 test1
(integer) 1
127.0.0.1:6379> smembers myset1
1) "test1"
zset(有序集合)
Redis zset和set一样也是String类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序的。
23. ZADD: 添加多个元素到有序集合中
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
例如:127.0.0.1:6379> ZADD city:gdp 95 "beijing" 92 "shanghai" 89 "shengzhen"
(integer) 3
- ZINCRBY: 为分数值加上增量
ZINCRBY key increment member
例如:127.0.0.1:6379> zincrby city:gdp 3 "beijing"
"98"
- ZCARD:获取有序集合中的元素数量
ZCARD key
例如:127.0.0.1:6379> ZCARD city:gdp
(integer) 3
- ZCOUNT: 获取在分数区间内的元素数量
zcount key min max
例如:127.0.0.1:6379> zcount city:gdp 90 99
(integer) 2
- ZREM: 删除有序集合中的多个元素
ZREM key member [member ..]
例如:127.0.0.1:6379> zrem city:gdp "beijing"
(integer) 1
排序
- sort 排序
sort mylist
例如:
127.0.0.1:6379> lpush mylist 1 2 3 4
(integer) 4
127.0.0.1:6379> lpush mylist 1 2 3 4 12 10 9
(integer) 11
127.0.0.1:6379> sort mylist
1) "1"
2) "1"
3) "2"
4) "2"
5) "3"
6) "3"
7) "4"
8) "4"
9) "9"
10) "10"
11) "12"
- 字母排序
sort mylist alpha desc limit 0 2
总结
本文主要介绍了Redis中各种常见的命令,Redis 有五种数据类型,每种数据类型都有不同的操作命令。