Redis五种数据结构:
String(字符串),List(链表),hash(Hash表),set(无序集合),sorted set(有序集合)
1.Redis客户端的启动和关闭方式:
Redis客户端启动:
1. redis-cli
2. redis-cli -p ${port} 指定redis服务器的端口(默认的是6379)
3. redis-cli -h ${ip} 指定redis服务器的ip地址
4. redis-cli -a ${password} 表示redis服务器在连接时是需要密码的,在这里指定密码
以上命令都是可以组合使用
Redis客户端关闭:
1. redis-cli shutdown
2. redis-cli -p ${port} shutdown
3. redis-cli -h ${ip} shutdown
以上命令都是可以组合使用
2.Redis基础命令
1. Redis客户端ping服务器
ping
2. 查看Redis服务器信息:
info
3. Redis 客户端退出:
quit
4. 手动执行一个同步保存操作,将当前Redis实例的所有数据快照以RDB文件的形式保存到磁盘:
save
5. 返回当前数据库的key的数量:
dbsize
6. 切换到指定的数据库,数据库的索引号默认是0~15:
select
7. 删除当前数据库中的所有key:
flushdb
8. 删除所有数据库中的所有key:
flushall
9. 列出当前数据库中所有的key:
keys *
3.Redis键命令
1. 设置一个键:
set ${key} ${value}
2. 获取某个key的value:
get ${key} #key如果不存在,则范湖nil
3. 删除一个键:
del
${key}
4. 判断某个键是否存在:
exists
${key} #如果存在则返回1, 不存在则返回0
5. 查看某个键的过期信息:
ttl ${key} #如果返回-2 则表示该key不存在;返回-1表示该key没有过期时间;其他正整除表示该key还有多少秒过期 单位是秒
6. 查看某个key的类型:
type ${key} #如果key不存在,则返回none
7. 从当前库中随机获取一个key:
randomkey
8. 为制定key设置过期时间,以秒为单位:
expire
${key} ${seconds}
9. 为某个key设置过期时间,时间参数是时间戳,即在某个时间点过期:
expireat
${key} ${timestamp}
10. 查找所有符合给定模式pattern的key:
keys ${pattern}
11. 将当前数据库中的key移动到给定的数据库db中:
move ${key} ${db} #如:move song 1 将当前库中key为song移动到数据库1中,移动完之后,当前库就不存在该key了
12. 移除key的过期时间,key将永久保存:
persist ${key}
13. 修改key的名称:
rename ${key} ${newKeyName} #如果所设置的新的key名称在该库中已经存在,则会覆盖掉已经存在的key
14. 修改key的名称:
renamenx
${key} ${newKeyName} #仅当newKeyName不存在时,才将指定的key进行重命名,如果newKeyName已经存在,则会报错
4.Redis字符串(String)命令
1. 返回key中字符串值的子字符串:
getrange ${key} ${start} ${end} #如:getrange mykey 0 3 表示获取key为mykey的字符串中0-3的字符,包括第0个和第3个元素
2. 将给定key的值设修改为newValue,并返回key的旧值:
getset ${key} ${newValue}
3. 同时设置一个或多个key-value对:
mset ${key1}
${value1}
${key2}
${value2}
...
${keyN}
${valueN}
4. 同时设置一个或多个key-value对,当且仅当所有key都不存在时设置:
msetnx ${key1}
${value1}
${key2}
${value2}
...
${keyN}
${valueN} #该操作具有原子性,要么都成功,要么都失败
5. 只有在key不存在时,设置key的值:
setnx ${key} ${value}
6. 获取所有给定的key的value:
mget ${key1}
${key2} ...
${keyN}
7. 设置key的值为${value},同时设置了过期时间${seconds},单位是秒:
setex ${key} ${seconds} ${value}
8. 和setex命令相似,只不过过期时间是以毫秒为单位:
psetex ${key} ${milliseconds} ${value}
9. 返回key所存储的字符串的长度:
strlen ${key}
10. 将key中存储的数值增1,注意这里key中存储的value必须是Integer类型的。否则会报错:
incr ${key}
11. 将key中存储的数值增加指定步长,${increment}为步长,注意这里key中存储的value必须是Integer类型的。否则会报错:
incrby ${key} ${increment}
12. 将key中存储的数值减1,注意这里key中存储的value必须是Integer类型的。否则会报错:
decr ${key}
13. 将key中存储的数值减掉指定步长,${increment}为步长,注意这里key中存储的value必须是Integer类型的。否则会报错:
decrby ${key} ${increment}
14. 如果key已经存在,且 是一个字符串,则在该key的value的末尾追加上${value}字符串:
append ${key} ${value}
5.Redis哈希(Hash)命令
Redis hash 是一个string类型的field和value的映射表,其实就相当于Java中的map,hash特别适合用于存储对象。
1. 将hash表key中的字段${field}的值设置为${value}:
hset ${key} ${field}
${value}
2. 只有在字段${field}不存在时,才设置hash表字段的值:
hsetnx ${key} ${field}
${value}
3. 同时将多个field-value对设置到哈希表key中:
hmset ${key} ${field1}
${value1}
${field2} ${value2} ... ${fieldN}
${valueN}
4. 获取存储在哈希表中指定字段的值:
hget ${key} ${field}
5. 获取所有给定字段的值:
hmget ${key} ${field1}
${field2} ...
${fieldN}
6. 获取在哈希表中指定key的所有字段和值:
hgetall ${key}
7. 获取指定hash表中所有的字段:
hkeys ${key}
8. 获取指定hash表中所有的值:
hvals ${key}
9. 获取指定hash表中字段的数量:
hlen ${key}
10. 删除一个或多个hash字段:
hdel ${key}
${field1}
${field2} ...
${fieldN}
11. 查看hash表key中指定的字段是否存在:
hexists ${key}
${field}
12. 为hash表key中指定字段的整数值加上增量${increment}:
hincrby ${key}
${field}
${increment}
13. 为hash表key中指定字段的浮点数值加上增量${increment}:
hincrbyfloat ${key}
${field}
${increment}
6.Redis链表(List)命令
Redis列表是简单的字符串列表,按照插入顺序排序,是可以放入重复值的。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
1. 将一个或多个值插入到列表头部(最左端L):
lpush ${key}
${value1}
${value2} ...
${valueN}
2. 将一个值插入到已存在的列表头部,列表不存在时操作无效:
lpushx ${key}
${value}
3. 将一个或多个值插入到列表尾部(最右端 R):
rpush ${key}
${value1}
${value2} ...
${
valueN
}
4. 将一个值插入到已存在的列表尾部,列表不存在时操作无效:
rpushx ${key}
${value}
5. 移出并获取列表的第一个元素,返回值是移出的元素:
lpop ${key}
6. 移出并获取列表的最后一个元素,返回值是移出的元素:
rpop ${key}
7. 用于移除源列表中的尾部的元素,并将该元素添加到目的列表的头部,返回的是被移动的元素:
rpoplpush ${source}
${destination}
8. 获取列表长度:
llen ${key}
9. 通过索引获取列表中的元素:
lindex ${key} ${index}
10. 通过索引设置列表中的元素:
lset ${key} ${index}
${value}
11. 获取列表中指定范围内的元素:
lrange ${key} ${startIndex}
${endIndex}
7.Redis集合(Set)命令
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
1. 向集合中添加一个或多个元素:
sadd ${key}
${member1}
${
member2
} ...
${
memberN
}
2. 获取集合的成员数:
scard ${key}
3. 返回给定所有集合的差集:
sdiff ${firstKey}
${otherKey1
} ...
${
otherKeyN
} #
差集的结果来自前面的
firstKey
,而不是后面的
otherKey1
,也不是整个
firstKey
otherKey1
..
otherKeyn
的差集。
如:
key1
=
{
a
,
b
,
c
,
d
}
key2
=
{
c
}
key3
=
{
a
,
c
,
e
} 那么:
SDIFF key1 key2 key3
=
{
b
,
d
}
4. 将给定集合之间的差集存储到指定的集合中去,如果指定的集合key已经存在,则将其覆盖:
sdiffstore ${destination} ${firstKey}
${otherKey1
} ...
${
otherKeyN
}
5. 返回给定所有集合的交集,不存在的集合key被视为空集:
sinter ${key}
${key1} ...
${keyN}
6. 将给定集合之间的交集存储在指定的集合中,如果指定的集合已经存在,则将其覆盖:
sinterstore
${destination}
${key}
${key1} ...
${keyN}
7. 判断member元素是否在集合key中:
sismember ${key}
${member}
8. 返回集合中的所有成员:
smembers ${key}
9. 将member元素从source集合中移动到destination集合中去:
smove ${source} ${
destination
} ${member}
10. 移除并返回集合中的一个随机元素:
spop ${key}
11. 移除集合中一个或多个元素:
srem ${key} ${
member1}
${
member2} ...
${
memberN}
12. 返回所有给定集合的并集:
sunion
${key}
${key1} ...
${keyN}
13. 所有给定集合的并集存储到destination集合中去:
sunionstore
${destination}
${key}
${key1} ...
${keyN}
8.Redis有序集合(Sorted Set)命令
Redis 有序集合和集合一样也是string类型元素的集合, 且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
1. 向有序集合中添加一个或多个成员,或者更新已经存在成员的分数:
zadd ${key}
${score1}
${member1}
${score2}
${
member2
} ...
${scoreN}
${
memberN
}
2. 获取有序集合的成员数:
zcard ${key}
3. 计算在有序集合中指定区间分数的成员数:
zcount ${key}
${min
}
${max
} #
返回分数值在 min 和 max之间的成员的数量
4. 返回有序集合中指定元素的score:
zscore ${key}
${
member
}
5. 通过索引区间返回有序集合指定区间内的成员:
zrange ${key}
${startIndex}
${endIndex} [withscores] #
[withscores] 是可选的,表示是否显示分数
6. 返回有序集合中指定成员的索引:
zrank ${key}
${
member
}
7. 有序集合中对指定成员的分数加上增量increment:
zincrby ${key}
${increment
}
${
member
}