只用html5做网站,广西庆海建设发展有限公司网站,wordpress建局域网,离婚协议书正规模板Redis中采用Key-Value键值对的形式将数据存储在数据库中#xff0c;首先介绍Redis中针对键Key的操作命名。
Redis键Key相关命令
# 查看当前库所有key
keys * # 判断某个key是否存在
exists key # 查看你的key是什么类型
type key # 删除指定的key数据
…Redis中采用Key-Value键值对的形式将数据存储在数据库中首先介绍Redis中针对键Key的操作命名。
Redis键Key相关命令
# 查看当前库所有key
keys * # 判断某个key是否存在
exists key # 查看你的key是什么类型
type key # 删除指定的key数据
del key # 根据value选择非阻塞删除将key从keyspace元数据中删除真正的删除在后续异步操作。
unlink key # 为指定的key设置过期时间n秒钟后过期
expire key n # 查看指定的key还有多少秒过期-1永不过期-2已过期
ttl key # 切换数据库
select num # 查看当前数据库的key的数量
dbsize # 清空当前库
flushdb # 清空所有库
flushall Redis中提供了五种基本数据类型字符串String、列表List、集合Set、哈希Hash、有序集合ZSet。
字符串String
String是Redis中最基本的数据类型是二进制安全的可以包含任何能够转化成字符串的数据如JPG图片、序列化对象等。一个字符串value最多存储512M。
String的数据结构为简单动态字符串可以自由修改在内部结构实现上类似于Java的ArrayList采用预分配冗余空间的方式来减少内存的频繁分配。
常用操作命令
# 添加键值对
set key value # 只有key不存在时设置key的值
setnx key value # 设置key-value的同时设置过期时间
setex key 过期时间 value # 同时设置一个或多个key-value对
mset key1 value1 key2 value2 ...# 同时设置多个key-value对当且仅当所有key都不存在
msetnx key1 value1 key2 value2 ... # 从begin位置开始用 value 覆写key所存储的字符串值
setrange key begin value # 查询对应键值
get key # 获取key值的 [begin, end]范围之间的值
getrange key begin end # 获取key值后将key设置为新值value
getset key value # 同时获取一个或多个value
mget key1 key2 key3 ...
# 将给定的value追加到原值的末尾
append key value # 获得值的长度
strlen key # 将key中存储的数字值增/减 1只能对数字值操作
incr / decr key# 将key中存储的数字值按照步长增减
incrby / decrby key 步长
列表List
Redis列表是简单的字符串列表按照插入顺序进行排序可以在列表的头部(左边)或尾部(右边)添加新元素。列表的底层实际是个双向链表对两端的操作性能很高通过索引下标操作中间结点的性能会较差。
列表List的数据结构为快速链表quicklist在列表元素较少的情况下会使用一块连续的内存存储这个结构称为ziplist即压缩列表。当数据量较多时才会改成quicklist。
普通的链表需要的附加指针控件太大会浪费空间Redis将链表和ziplist结合起来组成了quicklist将多个ziplist使用双向指针串起来使用这样既满足了快速插入删除功能也不会出现太大的空间冗余。
常用操作命令
# 从列表左边/右边插入一个或多个值
lpush/rpush key value1 value2 value3... # 从列表的左边/右边吐出一个值值在键在值光键亡
lpop/rpop key # 从key1列表右边吐出一个值插入到key2的左边
rpoplpush key1 key2 # 按照从左到右的顺序获得key列表中[begin, end]区间的值0 - 左边第一个-1 - 右边第一个[0,-1] - 表示获取所有
lrange key begin end # 按照从左到右的顺序获取key列中索引下标位置的值
lindexkey index # 获得列表的长度
llen key # 在value的后面插入newvalue
linsert key before value newvalue # 从左边删除n个value
lrem key n value # 将key列表中下标为index的值替换成value
lset key index value 集合Set
Redis集合Set提供的功能类似于List特殊之处在于Set是可以自动排重的并且Set提供了判断某个成员元素是否存在的接口。
Redis的Set是string类型的无序集合它底层是一个value为NULL的hash表添加、删除、查找的时间复杂度都是O(1)。
Redis集合Set的数据结构是dict字典采用Hash表实现的。
常用操作命令
# 在集合key中插入一个或多个值已存在的值将被忽略
sadd key value1 value2... # 取出该集合的所有值
smembers key # 判断集合key中是否存在value存在返回1没有返回0
sismembers key value # 获取该集合key的元素个数
scard key # 删除集合key中的某些元素
srem key value1 value2... # 随机从集合key中吐出一个元素
spop key # 随机从该集合中取出n个值 不会从集合中删除
srandmember key n # 把key1集合中的value移动到key2集合中
smove key1 key2 value # 返回两个集合的交集元素
sinter key1 key2 # 返回两个集合的并集元素
sunion key1 key2 # 返回两个集合的差集元素key1集合中不包含key2集合元素的元素
sdiff key1 key2 哈希Hash
Redis哈希Hash是一个键值对集合是一个string类型的field和value的映射表特别适合用于存储对象类似Java中的MapString, Object。在操作时采用 key field 来获取对应属性的数据既不需要重复存储数据也不会带来序列化和并发修改控制的问题。
# 给key中的field键赋值value
hset key filed value # 为key中的域field赋值value当且仅当filed不存在
hsetnx key filed1 value1 # 批量设置key中的键值对
hmset key filed1 value1 filed2 value2 # 从key中取出属性field的数据
hget key field # 查看key中是否存在给定的field
hexist key field # 列出key中所有的field
hkeys key # 列出key中所有的value
hvals key # 为key中的域field的值加上增量increment
hincrby key field increment 有序集合Zset
Redis有序集合Zset是一个没有重复元素的字符串集合并且为集合中的每个成员关联了一个评分score这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合中的成员是唯一的但是评分是可以重复的。
基于元素是有序的可以很快速地通过评分score或者次序position来获取一个范围。访问有序集合的中间元素也是非常快的因此可以使用有序集合作为一个重复成员的智能列表。
Zset是Redis提供的一个非常特别的数据结构一方面等价于数据结构MapString, Double可以给每个元素value赋予有一个权重score另一方面又类似于TreeSet内部元素会按照权重score进行排序可以通过score的范围来获取元素的列表。
Zset底层使用了两个数据结构 1hashhash的作用就是关联元素value和权重score保障元素value的唯一性可以通过元素value找到相应的score值。 2跳跃表跳跃表的目的在于给元素value排序根据score的范围获取元素列表。
常用操作命令
# 将一个或多个member元素及其score值加入到有序集key中
zadd key scores1 value1 scores2 value2... # 返回有序集key中下标在[start, end]之间的元素WITHSCORES选项能够同时让分数和值一起返回
zrange key start stop [WITHSCORES] # 返回有序集Key中所有score分介于[min, max]之间的成员成员按照score分值从小到大次序排列
zrangebyscore key min max [withscores] [limit offset count] # 返回有序集Key中所有score分介于[min, max]之间的成员成员按照score分值从大到小次序排列
zrevrangebyscore key max min [withscores] [limit offset count] # 为元素value的score加上增量
zincrby key increment value # 删除集合key中的指定元素value
zrem key value # 统计该集合key中score分值在[min, max]之间的元素个数
zcount key min max # 返回值value在集合key中的排名从0开始计数
zrank key value