目录
# 7. 设置值的同时,指定生存时间(每次向Redis中添加数据时,尽量设置生存时间)
# 8. 设置值,如果当前key不存在的话(存在的话,什么也不做,如果不存在,同set命令)
# 9. 在key对应的value后,追加内容(相当于字符串拼接)
# 5. 设置值(如果可以-field不存在,就正常添加,存在,什么也不做)
# 8. 获取当前hash结构中全部的field和value
# 3. 修改数据(在存储数据时,指定好你的索引位置,覆盖之前索引位置的数据,index超出整个列表的长度会失败)
# 5. 获取指定索引范围内的数据(start从0开始,stop输入-1,代表最后一个数,-2代表倒数第二个数)
# 9. 保留列表中的数据(保留你指定索引范围内的数据,超过索引范围被移除掉)
# 10. 将一个列表中的最后一个数据,插入到另外一个列表的头部位置
# 3. 随机获取一个数据(获取的同时,移除数据,count默认为1,代表弹出的数据
# 1. 添加数据(score必须是数值。member不允许重复)
# 3. 查看当前数据库中有多少key,返回的是key的数量。
# 1. 查看Redis中的全部的key (pattern: *,xxx*,*xxx)
# 2. 查看某一个key是否存在(1 - 存在,0 - 不存在)
# 4. 设置key的生存时间,单位秒,单位毫秒,设置过期时间
# 5. 设置key的生存时间,单位为秒,单位为毫秒,设置能活到啥时候
# 7 移除key的生存时间(1 - 移除成功, 0 - key不存在生存时间,key不存在)
内存数据库,
Reds是一个key-value型的数据库(相比较之下,MySQL是关联数据库),也就是说,
一个key对应一个value,这是保证高效的手段之一。另外,Redis的所有数据在使用时都存放在内存中。
这包含了两层含义:
单台Redis能存放多少数据,取决于其内存的大小(假设所有内存都给Redis用)。如果需要存放更多数据,可以增加内存或做集群。
Redis支持将数据持久化到磁盘中。但是,不会直接对磁盘进行读写。这种持久化,一般是用于在服务器重启时,先把数据持久化,重启后再从磁盘中读取到内存。
string常用的命令
set key value
eg:set mykey myvalue
get key
eg:get mykey
mset key value [key value ...]
mget key [key ...]
incr key
注意:Incr 命令将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
decr key
incrby key increment
decrby key increment
eg:incrby mynum 20
Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。
setex key second value
eg: setex mykey 60 myval
setnx key value
eg:
append key value
eg:
strlen key
String 类型的应用场景:缓存对象、常规计数、分布式锁、共享session信息等。
增加:set key
删除:del key
修改:rename key keynew
查询:get key
hash常用类型,hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表
hset key field value
Hset 命令用于为哈希表中的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。
eg:hset website gogle "www.g.cn"
hget key field
eg: hget website gogle
hmset key field value [field value ...]
hmget key field [field]
hincrby key field increment
Hincrby 命令用于为哈希表中的字段值加上指定增量值。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。
eg:
hsetnx key field value
eg:
hexists key field
eg:
hdel key field [field ...]
hgetall key
eg:
hkeys key
hvals key
hlen key
Hash 类型:缓存对象、购物车等。
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
list常用命令
lpush key value [value ...]
eg: LPUSH openlab redis
rpush key value [value ...]
(如果key不存在,什么事都不做,如果key存在,是list结构就类似lpush操作,但不是list结构,什么也不做)
lpushx key value
rpushx key value
lset key index value
lpop key
rpop key
lrange key start stop
lindex key index
llen key
(他是删除当前列表中的count个value值,count > 0从左侧向右删除,count < 0 从右向左删除,count == 0 删除全部的value)
lrem key count value
ltrim key start stop
rpoplpush list1 list2
List 类型的应用场景:
消息队列(有两个问题:1. 生产者需要自行实现全局唯一 ID;2. 不能以消费组形式消费数据)等。
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
据。
集合对象的编码可以是 intset 或者 hashtable。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。
set常用命令
sadd key member [member ...]
smembers key
spop key [count]
sinter set1 set2
sunion set1 set2
sdiff set1 set2
srem key member [member ...]
sismember key member
Set 类型:聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等。
有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行 从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
zset的常用命令
zadd key score member [score member]
(如果member是存在于key中的,正常增加分数,如果 member不存在, 这个命令就相当于zadd)
zincrby key increment member
zscore key member
zcard key
zcount key min max
zrem key member [member ...]
(withscores如果添加这个参数,那么就会返回member对应的分数)
zrang key start stop [withscores]
(withscores如果添加这个参数,那么就会返回member对应的分数)
zrevrange key start stop [withscores]
(withscores代表同时返回score,添加limit,和MySQL中一样,如果不希望等于min或者max的值被查出来可以采用‘(分数’相当于 < 但是不等于的方式,最大值和最小值使用 +inf 和 -inf来表示)
zrangebyscore key min max [withscores] [limit offset count]
# 显示整个有序集
# 显示整个有序集及成员的 score 值
# 显示score <3 的所有成员
(withscores代表同时返回score,添加limit,就和mysql中一样)
zrangbyscore key max min[withscores] [limit offset count]
Zset 类型:排序场景,比如排行榜、电话和姓名排序等。
客户端与 Redis 建立连接后,默认会选择 0 号数据库即 db0,但可以使用 select 命令更换存储的数据库。
也可以通过修改配置文件的方式选择默认数据库。
flushdb
flushall
dbsize
lastsave
monitor
keys pattern
eg: keys *
查看所有key
keys mykey
查看指定key
keys mykey* 查看前缀key
exists key
del key [key ...]
expire key second
pexpire key milliseconds
expireat key timestamppexpireat key milliseconds
(-2 - 可以不存在,-1 - key没有设置生存时间,具体剩余的生存时间)
ttl key
pttl key
persist key
select 0~15
move key db