Redis不同类型操作
遵循BSD协议开源,内存持久化,非关系型结构化查询语句
datapage分割文件 4k id 磁盘 root根
index索引 4k 磁盘 node枝
B+红黑树 内存 leaf叶
Redis将数据分为
热数据 经常使用的数据 内存
冷数据 不经常使用的数据 磁盘
第一次在服务器登录的用户会经过程序,由程序寻找用户信息,若找到,则将用户信息存入内存中,内存会设置过期时间来清理内存
Redis key是二进制安全的,可以放入任何字符,键值莫要太长(耗内存),莫要太短(可读性差)
Redis优点
性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis的缺点
是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
String类型
字符串类型的内部编码有3种:
int:8个字节的长整型。
embstr:小于等于39个字节的字符串。
raw:大于39个字节的字符串。
Redis会根据当前值的类型和长度决定使用哪种内部编码实现
string 时间系列(无)
keys * 获取所有
setnx 只允许创建操作,没有的时候可以写入 set k1 ooxx
xx 覆盖原有的k1内容,set k1 ooxx xx
type k1 判断k1类型
OBJECT encoding k1 贴标签给输入数据,看是否符合运算
MSET key value [key value …] 设置多个键的字符串值 mest k2 5 k3 6
MSETNX key value [key value …] 键不存在时,设置字符串值 注意是原子操作,对多个kv,要不成功都失败
查找键 KEYS pattern
pattern取值
* 任意长度字符
? 任意一个字符
keys ? ?代表获取一个字符 keys ?表示只查找一个字符的k名称, eg:k
keys ?? 表示查找2个字符的k名称,eg:k1,k2…
[] 字符集合,表示可以是集合中的任意一个
strlen k1 标明k1的长度
flushall 清掉所有的数据库
flushDB 清掉当前的数据库
数据库编号从0-15,共计16个数据库,进入1号数据库 redis-cli -n 1
在UTF-8的语言环境下,redis-cli --raw 文件中文字符可以显示
EXISTS key 键是否存在
RENAME key newkey 键重命名
RENAMENX key newkey 键重命名
DEL key [key …] 键删除
MGET key [key …] 获取多个给定的键的值
GETSET key value 返回旧值并设置新值,如果键不存在,就创建并赋值
APPEND key value 追加字符串,如果键存在就追加;如果不存在就等同于SET key value
127.0.0.1:6379> APPEND k1 123456789
(integer) 12
127.0.0.1:6379> get k1
“abc123456789”
127.0.0.1:6379> GETRANGE k1 3 -1 截取从第4个字符到最后一个字符
正反都可以取 ,开始的下标是0,末尾的下标是-1
步长1的增减 INCR key DECR key
步长n的增减 INCRBY key n DECRBY key n
步长0.5的增减 INCRBYFLOAT key 0.5
位操作
BITOP 对一个或多个二进制的字符串key进行位运算,并保存在destkey上
operation 可以是AND、OR、NOT、XOR
列表 List
LPUSH abcdef --> LRANGE/LPOP fedcba 先进后出,后进先出
LPUSH abcdef --> RPOP abcdef 先进先出
从列表头部开始删除值等于value的元素count次,LIST 可以重复出现
LREM key count value
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值
count = 0 : 移除表中所有与 value 相等的值
LTRIM key start stop 去掉start和stop之外的元素
LINSERT key BEFORE|AFTER pivot value 在列表中某个存在的值(pivot)前或后插入元素
key和pivot不存在,不进行任何操作
阻塞:BLPOP,谁先阻塞的谁先解放 BLPOP 0 一直阻塞、 BLPOP 3 三秒后解除阻塞
Hash散列
一个K得到多个信息,kv间有关联,节省内存空间,(数据段时间段轮询删除)
不适合用hash散列进行二进制操作,命令达不到完全处理的要求
(k过期)主动删除散列中信息,从头到尾找冷数据,删掉。 耗时,耗费空间
(k过期)被动删除,当请求寻找冷数据时,发现过期删掉 占用内存
设置单个字段 HSET key field value
设置多个字段 HMSET key field value [field value …]
返回字段个数 HLEN key
判断字段是否存在 HEXISTS key field key或者field不存在,返回0
返回字段值 HGET key field
返回多个字段值 HMGET key field [field …]
返回所有的键值对 HGETALL key
返回所有字段名 HKEYS key
返回所有值 HVALS key
在字段对应的值上进行整数的增量计算 HINCRBY key field increment
在字段对应的值上进行浮点数的增量计算 HINCRBYFLOAT key field increment
删除指定的字段 HDEL key field [field …]
集合
–set
无序的,去重的,字符串类型,最多包含2^32-1元素不能按照下标索引删除
增加一个或多个元素 SADD key member [member …] 如果元素已经存在,则自动忽略
移除一个或者多个元素 SREM key member [member …] 元素不存在,自动忽略
返回集合包含的所有元素 SMEMBERS key
返回集合中元素的个数 SCARD key
把元素从源集合移动到目标集合 SMOVE source destination member
检查给定元素是否存在于集合中 SISMEMBER key member
随机返回集合中指定个数的,适合抽奖 SRANDMEMBER key [count]
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合 最多返回整个集合 conut>=0
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值 count < 0 长度为count绝对值,元素可能重复
如果 count 为 0,返回空
如果 count 不指定,随机返回一个元素
差集,具有方向性
SDIFF key [key …] 从第一个key的集合中去除其他集合和自己的交集部分
SDIFFSTORE destination key [key …] 将差集结果存储在目标key中
交集
SINTER key [key …],取所有集合交集部分
SINTERSTORE destination key [key …],将交集结果存储在目标key中
并集
SUNION key [key …],取所有集合并集
SUNIONSTORE destination key [key …],将并集结果存储在目标key中
SorteSet有序集合
有序的、去重的、字符窜类型、最多包含2^32-1元素、每一个元素都关联着一个浮点数分值(Score),并按照分值从小到大的顺序排列集合中的元素。分值可以相同
增加一个或多个元素 ZADD key score member [score member …] 如果元素已经存在,则使用新的score
移除一个或者多个元素 ZREM key member [member …]
显示分值 ZSCORE key member
增加或者减少分值 ZINCRBY key increment member increment为负数就是减少
ZINCRBY fruits 1.5 西瓜 值在原有的基础上增加1.5
返回元素的排名(索引) ZRANK key member
返回元素的逆序排名 ZREVRANK key member
返回指定索引区间元素 ZRANGE key start stop [WITHSCORES] 默认按照score从小到大
返回指定索引区间元素 ZREVRANGE key start stop [WITHSCORES]
返回指定范围中元素的个数 ZCOUNT key min max 分值score之内
返回指定分值区间元素(无,百度)
移除指定排名范围的元素 ZREMRANGEBYRANK key start stop
移除指定分值范围的元素 ZREMRANGEBYSCORE key min max
返回集合中元素个数 ZCARD key
并集、交集(ppt 89)

本文介绍了Redis不同类型操作。Redis遵循BSD协议开源,采用内存持久化,是非关系型数据库。它将数据分为热数据和冷数据,有诸多优点,但数据库容量受物理内存限制。还详细阐述了String、List、Hash、Set、SortedSet等类型的操作方法,如增删改查等。

被折叠的 条评论
为什么被折叠?



