Redis学习_第二章(Redis基本数据类型和事务)

目录

1:redis基本数据类型和作用

1.0:redis基础命令

1.1:string(字符串)

1.2:hash(哈希)

1.3:list(列表,数据有序可以重复)

1.4:set(集合,数据无序,不能重读)

1.5:zset(有序集合,数据有序,不能重复,但是分值可以一样)

1.6:HyperLogLog(2.8版本新增,用于做基数统计算法)

2:数据类型总结

3: redis事务

3.1:redis事务的定义

3.2:redis事务的用法


1:redis基本数据类型和作用

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1.0:redis基础命令

redis命令说明
del a删除a的key
keys *查询所有的key
keys n*模糊查询
EXISTS a查询a的key是否存,返回0或者1
EXPIRE a 20设置a的过期时间,时间单位是秒
PEXPIRE a 5000设置a的过期时间,时间单位毫秒
PERSIST a删除a的过期时间
PTTL a返回a的过期时间 单位是毫秒
TTL a返回a的过期时间 单位是秒
RENAME a aa将a改成aa 
TYPE aa返回aa的类型 

1.1:string(字符串)

长度是512M,存储字符串

String命令说明实战用法
set key value单个key赋值常用设置缓存
get key单个key取值常用获取缓存
getrange key start end获取key的子字符
getset key value将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
mset key value [key value ...]同时设置一个或多个 key-value 对。
mget key[key1 key2 ...]获取所有(一个或多个)给定 key 的值。
setnx key value只有在 key 不存在时设置 key 的值。并发锁
incr key将 key 中储存的数字值增一。销量+1
incrby key increment将 key 所储存的值加上给定的增量值(increment) 。增加指定值
DECR key将 key 中储存的数字值减一。库存-1
DECRBY key decrementkey 所储存的值减去给定的减量值(decrement) 。减少指定值
STRLEN key获取key的长度
append key value拼接字符串

1.2:hash(哈希)

是一个field-value的映射表,适合存储对象,存储长度是2^32-1,一共40亿对的键值对。

hash命令说明实战用法
HMSET hash1 field1 "zhangsan" field2 "beijing" field3 "22"存储hash1常用设置对象
HDEL hash1 age删除指定的字段(age)常用获取对象指定属性
HEXISTS hash1 age判断hash1的age是否存在
HGET hash1 name获取hash1的指定name字段
HGETALL hash1获取hash1的所有键值
HMSET hash1 age "20"重新把hash1的age属性设置回来
 HINCRBY hash1 age 2把hash1的age属性添加2 变成22
HKEYS hash1获取所有的key集合
HLEN hash1获取hash1的key的长度 返回整形3
HVALS hash1获取hash1的值的集合
 HSET hash1 age "99"修改hash1的属性

1.3:list(列表,数据有序可以重复)

Redis列表是简单的字符串列表,数据可以重复,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 2^ 32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

第5个添加元素第4个添加元素第3个添加元素第2个添加元素第1个添加元素

list命令说明实战用法
 LPUSH key value在列表的头部添加元素list数据主要用在消息队列
LPOP key移除列表的左边第一元素
LINDEX key index通过索引获取列表中的元素
RPUSH key value在列表尾部添加元素
 RPOP key移除列表的右边第一元素适合秒杀场景 从队列取数据
LLEN key获取列表长度
LSET key index value通过索引设置元素的值
LINDEX key index通过索引获取列表中的元素
LTRIM key start stop对一个列表进行修剪,获取开始和结束区间的值

1.4:set(集合,数据无序,不能重读)

set命令说明实战用法
SADD set1 "22" "33" "44" 向set1中添加元素22 33 44,数据不能重复set数据主要用来查重
SCARD set1获取集合的成员数长度
SMEMBERS set1获取集合的所有成员
SPOP set1随机删除set1中的成员
SDIFF set1 set2差集 set1-set2
SDIFF set1 set2差集 set2-set1
SINTER set2 set1交集 相同的部分
SUNION set2 set1并集  集合并集
SDIFFSTORE set3 set1 set2set3=set1-set2
 SINTERSTORE set3 set1 set2set3=set1和set2的交集
SUNIONSTORE set3 set1 set2set3=set1+set2

1.5:zset(有序集合,数据有序,不能重复,但是分值可以一样)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

zset命令说明实战用法
ZADD zset1 4000 tom向zset中添加分值4000的tom用于热门数据 实时热度
ZCARD zset1查询成员个数,返回整形
ZCOUNT zset1 0 7000查询成员分值区间个数,返回整形

ZINCRBY zset1 1 "tom"

ZREVRANGE  zset1  0 3 WITHSCORES

tom的分值+100

返回其中成员的位置按分数值递减(从大到小)来排列 0-2 前四名

将tom的热度+1

用户更新热度前三的数据

1.6:HyperLogLog(2.8版本新增,用于做基数统计算法)

什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

为什需要这个数据类型,以为hyperloglog可以存储2^32次方的数据,大约60亿个,但是这个键只会话费12KB的内存,算法空间也只需要12KB,计算的时候十分节省空间内存相较于传统的集合。

zset命令说明实战用法
 PFADD usercount aa添加指定元素到 HyperLogLog 中将每天,每月,每年的同一个用户访问量存储起来,大小只需要12KB  不需要使用set,那样数据量会很大
PFCOUNT usercount返回给定 HyperLogLog 的基数估算值。计算每天,每月,每年的访问,

2:数据类型总结

类型简介特性场景
String(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M---
Hash(字典)键值对集合,即编程语言中的Map类型适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)存储、读取、修改用户属性
List(列表)链表(双向链表)增删快,提供了操作某一段元素的API1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
Set(集合)哈希表实现,元素不重复1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set(有序集合)将Set中的元素增加一个权重参数score,元素按score有序排列数据插入集合时,已经进行天然排序1、排行榜 2、带权

3: redis事务

3.1:redis事务的定义(不保证要么都执行,要么回退)

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

1:批量操作在发送 EXEC 命令前被放入队列缓存。批量执行

2:收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。

3:在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

开始事务。(MULTI)

命令入队。(各种redis操作)

执行事务。(EXEC)

3.2:redis事务的用法

redis事务说明
WATCH c监听c的值,如果c的值发生变化就回滚事务,否则提交
MULTI开始事务
set a 2执行具体的操作a=2
set b 2执行具体的操作c=2
EXEC提交事务
DISCARD回滚事务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值