Redis数据类型

基本类型(String int):

如 set key value 、get key 等 所有命令都是按照 key value

keys * 可以将全部数据列出,其中后面的 " * " 表示数据的匹配。

setnx key value 不覆盖设置,返回0表示失败(原来这个key已经有值),返回1表示成功。

setex key time value 设置数据保存的有效时间(time 单位是秒)

ttl key 查看当前数据的有效时间

flushdb 清空仓库数据。

基本类型适合用户进行短期的数据存储

Hash数据类型

其保存的数据结构为 "key=value"

举例:保存一个用户的用户名、真实姓名、密码,

hset user-admin username admin   hset user-admin name xiaoming   hset user-admin password 123456

取得用户名)hget user-admin username

取得真实姓名hget user-admin name

取得密码 hget user-admin password

有了Hash之后 Redis的数据类型可以和JAVA中VO匹配的上(都是key-value格式)

hash类型存在的意义不大,因为基本类型做JSON存储也可以达到hash的效果

List数据类型

List是一个链表结构,链表结构的时间复杂度是n

举例:创建一个List并设置若干个内容。lpush testList  test1 test2 test3(testList是集合的名字,后面的是集合存储的数据)

进行指定范围的链表数据输出(链表是不能通过index查询的) lrange testList 0 1 返回 test3 test2 (栈 先进后出)

lrange testList 0 -1表示输出全部的内容

可以利用List类型实现消息队列或者缓冲的功能,在实际开发之中有很多公司可能不直接使用消息队列中间件,而直接利用Redis代替

Set 数据类型

可以实现集合的比对处理,列如可以实现数据的交集,并集,插集(比如 微博中 共同关注好友,可能关注等。。。)

举例 sadd user a b c d e(向集合user中追加五个元素)

列出所有元素 smembers (set集合无序)

删除某个元素 srem user a

返回两个集合的差集合 sdiff set1 set2(返回几个set1和set2的差集)

保存差集的运行结果到另一个集合 sdiffstore存储集合key 集合key1 集合key2

该类型支持集合的运算 可用在相似度检测,好友推荐等

SortedSet集合

该集合算是Set集合的扩展,该集合可以保存一个分数,这个分数的操作就可以作为数据的统计结果出现

追加有序集合数据:zadd 集合key  分数 内容

数据增长:zincrby 集合key 增长分数 内容

根据分数取得指定范围的数据 zrangebyscore 集合 开始分数 结束分数 withscores

SotedSet主要进行数据的流式分析(利用分数分析数据,比如一个商品浏览了多少次)

Redis事物处理

Redis支持事物处理,但是这种事物处理本身是存在有设计缺陷的。

打开事物:multi

取消事物:discard

提交事物:exec

支持举例: Multi ; set i =10; discard;因为取消了事物所以 i的值不会被set成10 所以Redis是支持事物的。

缺陷举例 :Multi ; set i=10; incr name; exec; 因为 name属性不是int 所以会出现报错:ERR Value is not an integer。但是 这种情况i=10;会被正确的执行 存到Redis里面。

Redis事物不完美也可以说不支持事物,因为Redis设计之初是不考虑事物的。

Redis乐观锁

大家都知道Mysql利用版本号字段实现乐观锁。

Redis乐观锁的处理比较简单 利用watch关键字监听redis的一些键即可,不需要增加处理列(也就是平时所说的版本号)

事物1 事物2
watch id; 进行该数据的监听 watch id;
Multi; Multi;
  set id 100
 set id 200; exec;
exec;返回nil,表示本次更新失败  

此时由于第二个事物更新了原始数据 id,那么就表示该原始数据上的一个标记列发生了变化(类似于Mysql的版本号),当第一个事物更新的时候,会返回nil表示本次更新失败。

Redis主从

Redis主从其实是为了数据备份(不同于MySQL  MySQL主从有读写分离的功能)。

当数据做出任何处理操作的时候都进行即时的备份,这种设计在Redis里面叫做主从设计 从服务器只是做数据备份 除此之外 什么都不做。常用 一主二从制。

配置(大致说明):

1)主服务器配置不需要做出任何变化,我不关心你有多少从服务器

2)编辑redis-->conf下面 redis.conf配置文件  salveof masterip masterport

3)在从服务器上设置 masterauth "主服务器的密码"

4) ./redis-server redis.conf 启动Redsi

Redis做缓存避免脏数据

MySQL和Redis是两个事物,不好做强一致性。

简单点:可以延时双删+过期时间保证最终一致性。

rm_redis
update_db
sleep xxx ms
rm_redis当然这种策略要考虑redis和数据库主从同步的耗时,所以在第二次删除前最好休眠一定时间,比如500毫秒,这样毫无疑问又增加了写请求的耗时

转载于:https://www.cnblogs.com/ssskkk/p/9901974.html

Redis常用数据类型和事物以及并发相关推荐

  1. redis常用数据类型的场景,你真的用对了么?

    关注微信公众号"虾米聊吧",每天更新一篇技术文章,文章内容涵盖架构师成长必经之路应掌握的技术,一起学习,一起交流. redis常用数据类型的场景,你真的用对了么? redis常用数 ...

  2. Redis面试常问-- Redis常用数据类型

    Redis常用数据类型 http://www.redis.cn/

  3. Redis 常用数据类型之 zset(有序集合)

    Redis 常用数据类型之 zset(有序集合) 有序集合 zset(sorted-set)相关特性 redis 有序集合 zset 与 无序 set 类型的一样,都是 string 类型的集合元素, ...

  4. Redis常用数据类型使用及基本知识

    前言(基本知识) Redis背景   08年的时候有一个意大利西西里岛的小伙子,笔名antirez(http://invece.org/),创建了一个访客信息网站   LLOOGG.COM.这个网站是 ...

  5. Redis常用数据类型及其对应的底层数据结构

    Redis数据库 Redis是一种键值(Key-Value)数据库.相较于MySQL之类的关系型数据库,Redis是一种非关系型数据库.Redis存储的数据只包含键和值两部分,只能通过键来查询值.这样 ...

  6. (一)Redis常用数据类型及应用场景(Redis的解决方案汇总)

    文章目录 一.Redis的介绍和安装 1.Redis是什么? 2.性能 3.支持的数据类型 二.数据类型实践案例 (一).String类型 (二).Hash类型(相对套娃) (三).list类型 (四 ...

  7. Redis常用数据类型及使用场景

    String(字符串) 常用命令 SET key value GET key GETRANGE key start end #返回[start, end]区间的字符串,key不存在时返回空字符串 MG ...

  8. Redis常用数据类型的数据结构

    文章目录 1. Redis 数据库介绍 2. 列表(list) 3. 字典(hash) 4. 集合(set) 5. 有序集合(sortedset) 6. 数据结构持久化 7. 总结 1. Redis ...

  9. Redis常用数据类型Set集合

    sadd key value 向指定key添加set数据,smembers key 获得指定key的数据. 127.0.0.1:6379> sadd s1 1 (integer) 1 127.0 ...

最新文章

  1. Unity从零开始构建能力体系 Unity Ability System
  2. Python Web学习笔记之TCP的3次握手与4次挥手过程
  3. USB hub(221)
  4. 为什么有些美国人名字仅仅只是两个英文字母(并不是缩写)?
  5. 漫步微积分二十四——定积分引言
  6. pycharm-python文件注释头
  7. 如何查看windows xp系统的位数?
  8. HTTP之一:http协议简介(3)
  9. python中常见的运行时错误_python--17个新手常见Python运行时错误
  10. python定时器毫秒_Python实现定时精度可调节的定时器
  11. day6:vcp考试
  12. mplab java失败_【超菜鸟求助】编译时失败,以下是显示内容。
  13. 计算机硕论题目,硕士论文题目精选(计算机方向)
  14. 怎样查看PPT中的字数
  15. Epicor 调试 customization
  16. objectArx ---反应器
  17. 计算机硬件设备ppt教案,《计算机硬件基础》PPT课件.ppt
  18. Day20 网络编程
  19. configure: error: Package requirements (sqlite3 」 3.7.4) were not met:
  20. 广度优先搜索算法的典型应用——消灭小星星游戏的核心代码实现与解析

热门文章

  1. 后台系统应该具备的素养
  2. Java笔试面试练习题---集合
  3. 【C++对象模型】第一章 关于对象
  4. 修改一个CGRect的值
  5. 一些简单的例子让你在Java中能更好的学习并理解循环结构(1)!
  6. Sqlserver存储过程和C#分页类简化你的代码!
  7. c语言 枚举类型 uint32_最全面C语言数据基本数据类型解析
  8. 集成springboot案例_SpringBoot开发者都在用的五款优质扩展,每个都很能打!
  9. 网络爬虫python的特点有哪些_为什么写网络爬虫天然就是择Python而用
  10. 利用python安装opencv_科学网—Anaconda Python PyCharm PyQT5 OpenCV PyTorch TF2.0 安装指南 - 张重生的博文...