Redis操作指令一

Redis学习笔记 操作指令一

1. 简介

由于之前有匆忙的接触过Redis。有感受到Redis相较于关系型数据库的便捷,快速和高效。便抽空专门边学习边写一些笔记来做一些分享。学习的途径主要是参考书籍《Redis实战》,参考网站 http://redisdoc.com/index.html

Redis是一种NoSQL数据库。可以存储key以及5种数据结构的映射。同时支持将存储在内存中的数据持久化到硬盘中(参考)。
by《Redis实战》

Redis说白了就是一种key-value的数据库。数据由于存储在内存当中有很高的读写性能。其中这种基于key-value的存储结构无须为了考虑表结构而改变数据的结构是相当人性化的。Redis支持的key是字符串。对于value有String(字符串)、List(列表)、Set(集合)、ZSet(有序集合)和Hash(哈希)总共5种数据接口。

2. 指令操作

2.1 字符串操作

2.1.1 基本操作

set key value 设置指定的键和值
get key 获取指定的键值
del key 删除指定的键

2.1.2 自增和自减运算

在Redis中字符串可以存储三种数据
1. 字符串
2. 整数
3. 浮点型
by 《Redis实战》

redis支持对字符串进行自增和自减的处理。会自动将字符串进行转换成整型或者浮点型。如果不能进行转换则会返回错误码。如果处理的key并不存在则会默认从0开始走自增和自减处理

incr key 对key进行自增
decr key 对key进行自减
incrby key value1 对key的value自增value1
decrby key value2 对key的value自减value2
incrbyfloat key value3 对key的value自增value3(value3是浮点型数据)。并没有decrbyfloat命令。

2.1.3 部分读写

Redis还支持对字符串部分内容进行读写的操作,这种操作是支持对整型和浮点型数据处理,但不建议这样做。

append key value1 向字符串key的value追加value1
getrange key start end 获取字符串key的value从start到end部分的值(包括start和end位置)
setrange key offset value1 从offset开始将字符串key的value替换成value1。value1的长度必须小于value从offset开始的长度。当value的长度不足时会自动将长度增加到符合条件时。即这条指令有追加的功能。

2.1.4 二进制处理

getbit key offset 将字符串作为二进制字符串。获取offset位置二进制的值
setbit key offset value1 设置二进制字符串key的value中offset位置的二进制值为value1
bitcount key [start] [end] 统计字符串key的value中二进制位为1的数量。start和end可选
bitop operator key1 key2 [key3…] destkey 对多个key的value进行二进制运算,运算结果存储在destkey中。运算类型支持并(and)、或(or)、异或(xor)和非(not)。

2.2 列表操作

列表中可以存储多个字符串。同时可以重复。

2.2.1 基本操作

lpush key [key1…] 向key的列表左端添加多个字符串。rpush是从右端添加字符串
lpop key 从key的列表左端删除一个字符串。rpop是从右端删除字符串
lindex key index 获取key的列表中index位置的字符串
lrange key start end 获取指定范围列表中的字符串。start=0,end=-1时可以获取列表所有的字符串
ltrim key start end 保留key的列表从start到end位置的字符串。

2.2.2 列表转移

rpoplpush src-list dest-list 从src-list的右端弹出一个元素插入到dest-list的左端。没有lpoprpush命令

2.2.3 阻塞队列操作

blpop list [list-1 …] timeout 可以对多个list进行左弹出一个字符串。但是会从左到右处理第一个非空列表。timeout是指当列表为空时会阻塞的时间。
brpop 同blpop。只是从列表的右端弹出字符串。
brpoplpush src-list dest-list timeout 从src-list中最右端弹出一个元素添加到dest-list的左端。如果src-list为空则阻塞timeout时长。

对于阻塞队列的操作常用于消息的传递和任务队列

2.3 集合操作

集合是通过散列的表来保证元素都是不相同的(这些散列表只有键,没有与键对应的值)。
by 《Redis 实战》

2.3.1 基本操作

sadd set-name item [item-1] 向集合添加元素。支持同时加入多个元素
smembers set-name 获取集合的所有元素。当集合元素很多时效率很低,谨慎使用
sismember set-name item 判断元素是否时集合中的元素
srem set-name item [item-1] 从集合中删除元素。支持同时删除多个元素
scard set-name 获取集合元素的个数
srandmember set-name [count] 随机返回集合中的元素。count>0时返回的元素不重复。count<0时返回的元素会重复。
spop 随机从元素中删除一个元素
smove src-set dest-set item 如果src-set中包含元素item则从src-set中删除,在dest-set中加入该元素。

2.3.2 集合运算

sdiff set-name set-name2 [set-name3…] 多个集合的差集
sdiffstore dest-set set-name set-name2 [set-name3…] 将多个集合的差集存储到dest-set中
sinner set-name set-name2 [set-name3…] 多个集合的交集
sinnerstore dest-set set-name set-name2 [set-name3…] 将多个集合的交集存储到dest-set中
sunion set-name set-name2 [set-name3…] 多个集合的并集
sunionstore dest-set set-name set-name2 [set-name3…] 将多个集合的并集存储到dest-set中

2.4 散列操作

散列可以存储多个键值对。键值对的值同字符串一样,可以是字符串也可以是数字值。同时支持对散列存储的值进行自增处理。

散列在很多方面就像是一个微缩版的Redis
by 《Redis 实战》

2.4.1 基本操作

hset map-name key value 向散列map-name中存放键值对key value。
hget map-name key 获取散列map-name中键key对应的value
hget map-name 获取散列map-name所有的键值对
hdel map-name key [key1…] 删除散列map-name中的键key。支持同时删除多个key
hlen map-name 获取散列map-name中键值对的数量
hexists map-name key 判断散列map-name中是否包含key

2.4.2 批处理

批量处理多个键的命令既可以给用户带来方便,又可以通过减少命令的调用次数以及客户端与redis之间的通讯往返次数来提升redis的性能。
by 《Redis 实战》

hmset map-name key value [key1 value1 …] 同时向散列map-name中存储多个键值对
hmget map-name key [key1…] 获取散列map-name中多个key的值
hkeys map-name 获取散列所有的键
hvals map-name 获取散列所有的值
hgetall map-name 获取散列所有的键值对

2.4.3 自增处理

hincrby map-name key increament 对散列map-name的key对应的值自增increament
hincrbyfloat map-name key increament 对散列map-name的key对应的值自增increament(浮点型)

对于散列中未存在的key进行自增处理时同样会将value初始作为0开始运算。

2.5 有序集合

有序集合和散列一样,都用于存储键值对:有序集合的键成为成员,每个成员都是各不相同的;而有序集合的值则 被称为分值,分值必须浮点型。
有序集合既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素。
by 《Redis实战》

2.5.1 基本操作

zadd set-name score item [score item …] 向有序集合添加分值score的成员item
zrem set-name item [item1…] 删除有序集合中的元素
zcard set-name 有序集合的成员个数
zcount set-name min max 获取有序集合分值介于min和max之间的成员
zrank set-name item 获取成员的排名
zrevrank set-name item 获取成员的排名(反序,分值由大到小)
zscore set-name item 获取成员的分值
zincrby set-name item increament 给成员的分值增加increament

2.5.2 基于分值的排名

zrange set-name start stop [withscores] 获取分值排名在start和stop之间的成员。withscores是返回时带有分值。
zrevrange set-name start stop [withscores] 反序由大到小的获取排名在min和max只之间的成员。
zremrangebyrank set-name start stop 删除有序集合中分值排序在start到stop之间的成员

2.5.3 基于分值的处理

zrangebyscore set-name min max [withscores] [limit offset count] 获取分值在min到max之间的成员。成员顺序由小到大排序。
zrevrangebyscore set-name max min [withscores] [limit offset count] 反序获取分值在max到min之间的成员。成员顺序由大到小排序。
zremrangebyscore set-name min max 删除有序集合中分值在min到max之间的成员

2.5.6 集合运算

zinterstore dest-set key-count zset-name zset-name1 [zset-name2] [weights [weigtht1 [weight2]…]] [aggregate sum|min|max] 对多个有序集合做交集运算。运算首选是取多个集合中成员的交集,成员的分数取决于aggregate参数指定的聚合函数和weight参数指定的乘法因子,aggregate默认是sum,weight默认是1。即会对相同成员的分值分别乘以集合对应的乘法因子再进行相加。其中key-count是指定参与交集运算的集合数量。
zunionstore dest-set key-count zset-name zset-name1 [zset-name2] [weights [weigtht1 [weight2]…]] [aggregate sum|min|max] 对多个有序集合进行并集运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值