前言
这一篇文章我们主要是来整理下Redis的一些常用命令。
基本命令
1.启动Redis
./src/redis-server redis.conf
2.连接Redis数据库
./src/redis-cli -h 127.0.0.1 -p 6379
3.切换数据库
redis中有16个数据库,分别是0~15库,默认操作的是0库,如果要切换数据库的话可以通过select命令切换。
select [dbId] #切换到1库 select 1
4.查看当前数据库的key的数量
dbsize
5.清空当前库
flushdb
6.判断某个key是否存在
exists key
7.查看你的key是什么类型
type key
8.为给定的key设置过期时间
expire key seconds #指定名为username的键的过期时间是10秒 例如:expire username 10
9.查看还有多少秒过期,-1表示永不过期,-2表示已过期
ttl key
字符串相关的操作命令
String 数据类型主要用在做缓存,计数器,分布式锁,分布式ID等等
1.设置一个字符串类型的值
set key value 例如: set testkey testvalue
2.获取字符串的值
get key 例如:get testkey
3.. 删除指定的key的值
del key 例如:del testkey
4.不存在就插入(not exists),
存在的话就不会插入,这是Redis做分布式锁的基础命令
setnx key value 例如:127.0.0.1:6379> setnx username zhangsan (integer) 1
5.递增
incr key incrby key increment 例如:127.0.0.1:6379> incr age
6.递减
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信息,存储用户信息,用户主页访问量等等。
1.设置单个field值
hset key field value 例如:HSET company:1 companyname alibaba
2.设置多个field值
hmset key field1 value1 [field2 value2 field3 value3 ......fieldn valuen] 例如:HMSET user:1 username zhangsna age 12
3.返回key中的field域的值
HGET key field 例如: 127.0.0.1:6379> HGET company:1 companyname "alibaba"
4.返回key中的field1,field2,fieldN域的值
hmget key field1 field2 fieldN 例如: 127.0.0.1:6379> HMGET user:1 username age 1) "zhangsna" 2) "12"
5.返回key中,所有的域与其值
hgetall key 例如: 127.0.0.1:6379> HGETALL user:1 1) "username" 2) "zhangsna" 3) "age" 4) "12"
6.删除键
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正是通过分数来为集合中的成员进行从小到大的排序的。
. 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 有五种数据类型,每种数据类型都有不同的操作命令。