Redis实战《一》-初识redis

1.初始Redis

Redis是一个速度非常快的非关系型数据库,他可以存储键和五种不同的值之间的映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

1.1 与其他数据库和软件对比
名称类型数据存储选项查询类型附加功能
Redis使用内存存储的非关系数据库字符串、列表、集合、散列、有序集合每种类型有自己的专属命令,不完全的事务支持发布订阅、主从复制、持久化、脚本
MySql关系数据库每个数据库有多个表,表有多个行select\update\insert\delete\函数\存储过程InnoDB类型支持ACID性质、主从复制、主主复制
MongoDB使用硬盘存储的非关系型数据库数据库->表->文档增删改查支持map-reduce操作、主从复制、分片、空间索引
1.2 Redis数据结构简介

redis可以存储键与五种不同数据结构类型之间的映射,这5中数据结构分别是String、List、Set、Hash、ZSet。有一部分命令对这5中数据结构是通用的,比如DEL、TYPE、RENAME。

结构类型结构存储的值结构的读写能力
String(字符串)可以是字符串、整数或者浮点数对整个字符串或者其中的一部分执行操作,对正数和浮点数执行自增或者自减
List(列表)链表,每个节点包含一个字符串从链表的两端推入或者弹出元素,基于偏移量修建链表、基于下表读取单个或者多个元素
Set(集合)无须的不重复的集合检查一个元素是否存在、计算交集、并集、差集、随机读取元素
Hash(散列)包含键值对的无序散列表添加、获取、移除某个键值对、获取所有键值对
ZSet(有序集合)字符串成员与浮点数分值之间的有序映射,排列顺序由分值大小决定添加、获取、删除某个元素
1.2.1 String字符串
命令行为返回值
GET获取存储在给定键中的值
SET设置值OK
DEL删除键中的值(这个命令可以用于所有类型)删除的个数(0或1)
SETEX为指定的key设置值和过期时间,如果key已经存在,覆盖OK
1.2.2 List列表

LPUSHRPUSH 分别表示用于将元素推入列表的左端和右端。
在这里插入图片描述下面展示了一些list中的基本命令:

命令行为返回值备注
LPUSH将给定值推入列表的左端数组长度
RPUSH推入右端数组长度
LRANGE根据下表获取元素元素集合lrange 0 -1,取出所有,如果第二个参数超过数组长度,也会返回所有的元素
LINDEX根据下表获取元素
LPOP从链表左端弹出(取出)元素弹出的元素取出后列表中就不存在
RPOP同上
1.2.3 Set集合

list和set都可以存储多个字符串,不同之处在于,set是无序的并且set通过散列来确定自己存储的每一个字符串都是唯一的。

命令行为返回值
SADD给定元素添加到集合0,1
SMEMBERS返回集合中所有元素
SISMEMBER检查给定元素是否存在于集合中0,1
SREM移除指定元素0,1
1.2.4 散列Hash

散列可以存储多个键值对之间的映射。
散列在很多方面就像是一个微缩版的Redis,很多字符串命令都有相应的散列版本。

命令行为返回值
HSET设置指定的键值对已存在返回0,但会执行更新操作。正常添加返回
HGT获取指定散列键的值没有返回null
HGETALL返回散列所有的键值对
HDEL删除指定的键值对0,不存在。1,正常删除
HLEN获取散列中字段的数量

1.2.5 有序集合ZSet

有序集合和散列一样,都用于存储键值对,这一点要注意,和set不一样,set集合是存储字符串的,zset中键值对的键称为成员(member),而且具有唯一性,值成为分值(score),分值必须为浮点数
有序集合是Redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素结构的

命令行为示例
ZADD将一个带有给定分值的成员添加到有序集合里面ZADD zset-key 728 member1
ZRANGE根据元素位置获取多个元素ZRANGE zset-key 0 -1 withscores
ZRANGEBYSCORE根据分值范围获取多个元素ZRANGEBYSCORE zset-key 0 900 withscores
ZREM根据成员删除元素ZREM zset-key member1
ZSCORE根据成员获取分值ZSCORE zset-key member0
ZREMRANGEBYRANK移除两个参数(下标表)之间的元素,0表示第一个元素,负数表示倒数第几个,例如(0,-26)表示移除第一个到倒数第26个之间的元素,这样最后会剩下25个移除的元素个数

现在我们已经简单了解Redis的五种结构,下面即将展示如何通过结合散列的数据存储能力和有序集合内建的排序能力来解决一个常见问题。

2. 测试代码

https://github.com/zhaoteng8069/redis-in-action-demo.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值