Redis常用数据结构 笔记

目录

字符串类型

运算

哈希类型

redis是基于key-value来保存数据的,key的类型是字符串类型,value的数据类型比较丰富,可以是:字符串、哈希、列表、集合、有序集合。

字符串类型

String类型既可以保存普通文字,也可以保存序列化的二进制数据【例如保存图片数据等等】。

String类型最多可以保存512M的数据。

存储、获取、删除的时候,key、value可以用""或''引起来也可以不用。

存储:set key value

获取:get key

删除:del key

getrange:获得截取字符串内容

getrange key start_index end_index:截取key对应的value从[start_index, end_index]的值。下标从0开始,start_index代表起始下标,end_index代表结束下标非偏移量。当end_index为-1时,表示从起始下标一直取到结尾。

例如:key email 对应的value为xx@qq.com,则getrange email 0 3,得到"xx@q";getrange email 1 3,得到"x@q"。

strlen: 获得key对应的value的长度

set key,例如:strlen email 得到 9

setex:设置带有过期时间(秒)的key-value

setex key seconds value

psetex key milliseconds value: 前面加p设置过期时间以毫秒为单位

mset:设置多个key-value,每个key后面跟着对应的value,不同的key-value直接用空格分割

mset key1 value1 key2 value2 key3 value3

mget:获得多个key对应的value,不同的key用空格分割。

mget key1 key2 key3

append:用于在字符串结尾追加内容

append key value,当redis中存在该key,则将value的内容追加到原来的value的后面,若不存在,则类似set的功能,相当于将key的value设置为现在的值

举例:set hello "hello"  append hello ", redis"  则get hello 得到"hello, redis"

运算

incr:数字自增加1、incrby:数字加上指定的整数值、incrbyfloat:数字加上指定的浮点数

对照:decrdecrby,但是没有float类型的,不过我们可以通过给incr_*传入负数实现减法

incr num,则get num是"1",继续incr num,再次get是"2"

incrby num 2,num 和 2都必须是整数,哪怕将2写成2.0也不行。

incrbyfloat num 2.0,num可以是整数也可以是小数,相加后会舍弃小数点后无意义的0,例如num若是2,则执行后num是4,get num得到"4",后续可以incr num也可以incrby num 2,但若num是2.0【set num 2.0 get num 得到"2.0"】,则只能用incrbyfloat num 2,此时再get num依旧得到"4"

哈希类型

这边的哈希类型只是为了能保存复杂的结构化数据。其实redis就是key-value的形式进行存储的,这边是将value再变成key-value的形式。

hset[hmset 在6.2.6版本中 hset 也可以同时设置多个 field value],设置哈希表子段

hset key field value [field value ...]

例:hset 1000 ename huahua deptno 20 age 30 job salesman

hget | hmget 获取哈希表字段值

hget key field      |     hmget key field [field ...],注意,要想同时取多个field的value,只能使用hmget。

hget 1000 age 得到 "30"

hgetall | hkeys | hvals: 获取哈希表该key所有的字段的值| 获取哈希表该key所有field的值|获取哈希表该key所有的value的值

hgetall key | hkeys key | hvals key

hlen:获取哈希表该key的field的个数, hlen key

hexists: 判断哈希表该key是否存在所给的field的字段, hexists key

hdel:删除哈希表该key所给的字段,可以删除多个,  hdel key field [field ...]

 

 运算

hincrby | hincrbyfloat:将哈希表该key对应的字段加给定数值和string类型的类似

hincrby key field intnum | hincrbyfloat key field num

列表类型

列表可以用来向value中保存序列化的数据。

rpush | lpush:从右 | 左 侧向value中添加数据,即在 末尾| 开头 添加,可以同时添加多个数据。

rpush | lpush key element [element ...]

注意,lpush,当用lpush一次性插入多个element时,先向开头插入element1,再向开头插入element2,则此时element2就在开头,element1在第二个位置,如下图:

lset:修改列表中对应下标【下标从0开始】的element的值

lset key index element

lrange :获取key中的下标从start到stop【包含】的元素,当stop=-1 或 大于等于列表长度,会直接从起始下标取到末尾

lrange key start stop

llen:获取key对应的所有元素的长度。

llen key

lindex:获取key对应下标的元素

lindex key index

linsert:向指定下标位置【通过元素值指定,从左往右的第一个遇到的元素的前后】插入元素,若不存在,则插入失败。

linsert key before | after 已存在的element 待插入的element

 

lpop | rpop:从列表的开头 | 末尾 弹出指定数目的元素,若不指定数目则弹出一个元素。

lpop | rpop key [count]

lrem:删除指定元素,从左往右删除count个,若一共也没有count个该元素,则该元素值全删,不存在该元素,则不删不会报错。

lrem key count element

集合类型

若要求value中的元素不可重复,可以使用集合类型,集合中元素的顺序不一定是插入元素的顺序。

sadd:向集合中添加元素,一次可以添加多个,添加的元素如果存在于集合中,则忽略,其他元素正常添加。

sadd key member [member ...]

smembers:查看集合中的所有元素

smembers key

scard:获取集合中成员的数目

scard key

sismember:判断集合是否含有某个成员

sismember key member

srem:删除集合中的成员,可以一次删除多个元素,若删除的成员不存在,则无法删除但不报错

srem key member [member ...]

spop:随即删除并返回集合的某个成员,随即删除可以一次性删除多个,删除多个也会返回多个,若删除的个数超出集合长度,则删除集合中所有成员并返回但不会报错。

spop key [count]

srandmember: 随机返回集合中的成员,可以返回多个,默认返回一个,最多返回所有成员,即若count超出了集合的长度,也只会返回所有值

 srandmember key [count]

有序集合

redis要求有序集合中的元素除了有元素值还要有分数值,有序集合就是通过对分数值的排序实现对元素的排序。

有序集合是带有排序功能的集合,redis会按照元素分数值排序,其是集合故不存在重复元素,因其有序,所以其中的元素是有索引编号的。

zadd:增加元素

zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]

zincrby:对分数值进行加法运算

zincrby key increment member

127.0.0.1:6379> zadd keyword 0 luhan 0 zhangchaoyang 0 mayun

(integer) 3

127.0.0.1:6379> zrevrange keyword 0 -1

1) "zhangchaoyang"

2) "mayun"

3) "luhan"

127.0.0.1:6379> zincrby keyword 1 luhan

"1"

127.0.0.1:6379> zincrby keyword 5 mayun

"5"

127.0.0.1:6379> zincrby keyword 2 zhangchaoyang

"2"

127.0.0.1:6379> zrevrange keyword 0 -1

1) "mayun"

2) "zhangchaoyang"

3) "luhan"


zrevrange:获得有序集合下标在[start, stop]的内容【降序】,若带上WITHSCORES,则也会显示分数值,不带的话不显示

zrevrange key start stop [WITHSCORES]

zrange:获得有序集合的内容【升序】

zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

zcard:获取有序集合长度

zcard key

zcount:查询某个分数范围内的元素数量,min | max表示最低最高分数值,均包含。

zcount key min max

zscore:返回元素的分数值

zscore key member

zrangebyscore:获得分数值区间[min, max]的内容【升序】,包含min和max,若要不包含在前面添加(。还有+inf 和 -inf。

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
zrevrangebyscore:获得分数值区间[min, max]的内容【降序】

zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]

127.0.0.1:6379> zrangebyscore keyword 2 (5 

1) "zhangchaoyang"

127.0.0.1:6379> zrangebyscore keyword (2 5 

1) "mayun"

127.0.0.1:6379> zrangebyscore keyword 2 +inf 

1) "zhangchaoyang"

2) "mayun"

127.0.0.1:6379> zrevrangebyscore keyword 5 2

1) "mayun"

2) "zhangchaoyang"

127.0.0.1:6379> zrevrangebyscore keyword 5 10

(empty array)

127.0.0.1:6379> zrevrangebyscore keyword 1 -inf

1) "luhan"

127.0.0.1:6379> zrevrangebyscore keyword (2 -inf

1) "luhan"

zrank:获得元素的升序排名(从0开始)

zrank key member

zrevrank:获得元素的降序排名(从0开始)

zrevrank key member

zrem:删除有序集合中的元素,zrem key member [member ...]

zrem keyword mayun zhangchaoyang

zremrangebyscore:删除分数值区间[start, stop]包含的元素,zremrangebyscore key min max

zremrangebyscore keyword 2 5

zremrangebyrank:删除排名区间[start, stop]的元素,包含,升序,从0开始, zremrangebyrank key start stop

127.0.0.1:6379> zrevrange keyword 0 -1 WITHSCORES

1) "mayun"

2) "5"

3) "zhangchaoyang"

4) "2"

5) "luhan"

6) "1"

127.0.0.1:6379> zremrangebyrank keyword 0 1

(integer) 2

127.0.0.1:6379> zrevrange keyword 0 -1 WITHSCORES

1) "mayun"

2) "5"

127.0.0.1:6379> zadd keyword 1 luhan 2 zhangchaoyang 5 mayun 7 liyanhong 0 hhh

(integer) 4

127.0.0.1:6379> zrevrange keyword 0 -1 WITHSCORES

 1) "liyanhong"

 2) "7"

 3) "mayun"

 4) "5"

 5) "zhangchaoyang"

 6) "2"

 7) "luhan"

 8) "1"

 9) "hhh"

10) "0"

127.0.0.1:6379> zremrangebyrank keyword 0 -3 只保留最高的俩

(integer) 3

127.0.0.1:6379> zrevrange keyword 0 -1 

1) "liyanhong"

2) "mayun"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis全套学习笔记.pdf》是一本关于Redis数据库的学习笔记,内容涵盖了Redis的基本概念、原理、操作、应用等方面的知识。 首先,Redis是一种开源的内存数据库,它具有高性能、高可用性和高扩展性的特点。它可以用于缓存、消息队列、实时排行榜等场景,广泛应用于Web应用开发、大数据存储和分析等领域。 在学习笔记中,首先介绍了Redis的基本概念,包括数据结构、持久化、单线程架构等方面的知识。数据结构包括字符串、哈希表、列表、集合和有序集合等,笔记详细介绍了它们的特点和使用方法。持久化方面,介绍了RDB快照和AOF日志两种持久化方式的原理和使用方法。同时,笔记也解释了为什么Redis选择单线程架构以及如何充分利用单线程的优势。 其次,学习笔记还包括了Redis常用操作,例如数据的增删改查、事务和管道操作、过期时间设置等。这些操作是使用Redis进行开发和使用时必不可少的知识点,通过学习笔记可以快速掌握这些操作的使用方法。 此外,学习笔记还涉及了Redis的高级应用,如发布订阅、Lua脚本、事件通知等。这些高级应用可以帮助开发者更好地利用Redis的功能和特性,提升系统的性能和稳定性。 综上所述,《Redis全套学习笔记.pdf》是一本全面介绍Redis的学习资料,通过学习这本笔记,读者可以了解Redis的基本概念和原理,掌握Redis常用操作和高级应用,从而更好地使用Redis进行开发和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值