String类型

  Redis一共分为五种基本数据类型:String、Hash、List、Set、ZSet

  String类型是包含很多张类型的特殊类型,并且是二进制安全的。比如对序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串数值等等。

Set和get方法的使用

  • 设置值:set name sgm (多次设置name值,后一次会覆盖前一次)
  • 取值 get name
  • 删除值:del name
  • setnx,nx的意思就是not exists;不覆盖赋值,如上例,如果name存在就不设置了。
  • setex,ex意思是expired;setex color 10 red 设置color的有效期为10秒,10秒后返回nil(在redis中nil表示空)
  • 使用setrange 替换字符串;set email 894120217@qq.com --> setrange email 10 ww(10表示从第几位开始替换,后面跟上替换的字符串)
  • 一次性获取和设置多个值mset,mget
  • 一次性设置和取值,getset key4 sss,也就是把原来的key4值打印出来,然后把sss赋值给key4
  • incr和decr:对某个值进行递增和递减
  • incrby和decrby:对某个值进行指定步长的增减
  • append【name】:追加字符串的方法;append name 1212
  • strlen key:获取字符串的长度

Hash类型

  Hash类型是String类型的field和value的映射表,或者说一个String集合。特别适合存储对象,相比而言,对象存在Hash中比在String占用空间要小,并方便存取整个对象。

  形如:hset myhash field1 hello(含义:hset是hash集合,myhash是集合名字,field1是字段名,hello是值);使用hget myhash field1获取内容,也可以存储多个值。hmset可以批量存储多个键值对:hmset myhash sex 1 addr beijing,可以使用hmget获取多个键值对。同样地也有hsetnx、hsetex。

  • hincryby和hdecrby集合递增和递减
  • hexists 是否存在key,如果存在返回,不存在返回0
  • hlen返回hash集合里的所有的键数值
  • hdel 删除指定hash的field
  • hkeys返回hash的所有字段
  • hvals 返回hash的所有value
  • hgetall 返回hash里所有的key和value

List类型

  List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。List类型是一个双端链表结构,可进行集合的头部或者尾部添加删除元素,可以作为栈,又可以作为队列。满足绝大多数需求

  • lpush:头部加入,先进先出
      形如:lpush list1 sgm
           lpush list1 zzt
  • rpush:尾部加入,先进先出
  • lrange:获取队列元素
  • linsert:插入元素
        形如:linsert list3 before [集合的元素][插入的元素]
  • lset:将指定下标的元素替换掉
  • lrem:删除元素,返回删除个数
        lrem list1 2 "b" 将第二个b移除
        lrem list1 0 -1 全部移除
  • ltrim :保留指定key的值范围内的数据
  • lpop:从list的头部删除数据,并返回删除元素
  • rpop:从list的尾部删除元素,并返回删除元素
  • rpoplpush:从尾部删除元素,并从头部加入刚才删除的元素
  • lindex:返回名称为key的list中index位置的元素
  • llen:返回元素的个数

set和zset类型

  set集合是string类型的无效集合,set是通过hashtable实现的,对集合我们可以取交集、并集、差集。

  • sadd :向名称为key的set中添加元素,set集合不允许重复元素,smembers查看set集合的元素
  • srem:删除集合元素
  • spop:随机返回删除的key
  • sdiff:返回两个集合的不同元素(哪个集合在签名就以哪个集合为标准)
  • sdiffstore:将返回的不同元素存储到另外一个集合里
        示例:sdiffstore set3 set1 set2(以set1为准,把set1和set2的不同元素存到set3里)
  • sinter:返回集合的交集
  • sinterstore:返回集合的交集并存到另一记集合里
        示例:sinterstore set3 set2 set1(取set1和set2的交集并存到set3里)
  • sunion:取并集
  • sunionstore:取并集并存到另一集合里
  • smove:从一个set集合移动到另一set集合(相当于剪切粘贴)
        示例:move set1 set2 a
  • scard:查看集合里元素个数
  • sismember:判断某个元素是否是集合中的元素,返回1是,返回0不是
  • srandmember:随机返回一个元素
  • zadd:想有序集合中添加一个元素,该元素如果存在,则更新顺序
        示例:zadd zset1 5 five(5表示顺序)
  • zrange:按照顺序显示zset(场景:rank相关的应用)
  • zrem : 删除名称为key的zset中的元素
        示例:zrem zset1 one
  • zincrby:以指定值去自动递增或减少
  • zrangebyscore:找到指定范围的数据返回
  • zremrangebyrank :删除 1到1
  • zremrangebyscore :删除指定序号

架构师养成记--31.Redis的几种类型的更多相关文章

  1. 架构师养成记--35.redis集群搭建

    前记:redis哨兵经验之谈.哨兵做主从切换可能要花费一两秒,这一两秒可能会丢失很多数据.解决方法之一是在java代码中做控制,try catch 到 链接断开的异常就sleep 一两秒钟再conti ...

  2. 架构师养成记--34.Redis持久化

    ---恢复内容开始--- redis是一个支持持久化的内存数据库,也就是搜redis需要经常将内存中的数据同步到硬盘来保证持久化.redis持久化有两种方式. snapshotting(快照)默认方式 ...

  3. 架构师养成记--33.Redis哨兵、redis简单事务

    Redis哨兵 有了主从复制,如果我想想对主从服务器进行监控,在redis2.6后提供了哨兵机制,2.6有哨兵1.0版本,并不稳定.2.8以后的哨兵功能才稳定起来. 顾名思义,哨兵就是监控Redis系 ...

  4. 架构师养成记--32.Redis高级(安全 主从复制)

    Redis高级命令及特性 keys * 返回满足的所有键值(*表示模糊匹配) exists 是否存在指定的key(返回1表示存在,0表示不存在) expire 设置某个key的过期时间,使用ttl查看 ...

  5. 架构师养成记--30.Redis环境搭建

    Redis的安装 下载地址http://redis.io/download 安装步骤: 首先需要安装gcc,把下载好的redis-3.0.0-rc2.tar.gz 放到 /usr/local 文件夹下 ...

  6. 架构师养成记--29.redis开篇

    主要有从下几点讲解 NOSQL(Redis) 简介.redis安装与部署 Redis基础事件类型详解 Redis高级命令 Redis与java的使用 Redis集群搭建 Redis集群与spring的 ...

  7. 架构师养成记--15.Disruptor并发框架

    一.概述 disruptor对于处理并发任务很擅长,曾有人测过,一个线程里1s内可以处理六百万个订单,性能相当感人. 这个框架的结构大概是:数据生产端 --> 缓存 --> 消费端 缓存中 ...

  8. 架构师养成记--14.重入锁ReentrantLock 和 读写锁 ReentrantReadWriteLock

    ReentrantLock 有嗅探锁定和多路分支等功能,其实就是synchronized,wait,notify的升级. this锁定当前对象不方便,于是就有了用new Object()来作为锁的解决 ...

  9. 架构师养成记--12.Concurrent工具类CyclicBarrier和CountDownLatch

    java.util.concurrent.CyclicBarrier 一组线程共同等待,直到达到一个公共屏障点. 举个栗子,百米赛跑中,所有运动员都要等其他运动员都准备好后才能一起跑(假如没有发令员) ...

随机推荐

  1. XSS学习笔记

    本片文章是读<<XSS跨站脚本gj剖析与防御>>一书的总结 常见的XSS攻击主要用于1.网络钓鱼,盗用用户账号2.窃取cookies 非httponly情况下,读取docume ...

  2. Laravel 引入自定义类库或第三方类库

    强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况.!!当然,没有命名空间也可以使用,就是类名字(非文件名)最好复杂一些.(重复也不要紧,程序会自己判断) laravel5.4中如 ...

  3. ScrollView中嵌套ListView的问题

    网上关于怎样在ScrollView中嵌套ListView的讨论有很多,我大概是搜索了一下,简单总结如下: 1.不要在ScrollView中嵌套ListView a.用一个LinearLayout来代替 ...

  4. IO多路复用原理

    (1)IO multiplexing(2)用在什么地方?多路非阻塞式IO.(3)select和poll(4)外部阻塞式,内部非阻塞式自动轮询多路阻塞式IO IO多路复用原理:其实就是整个函数对外表现为 ...

  5. ADO接口之_RecordsetPtr

    转自:http://hi.baidu.com/%CE%D2%B6%CF%C1%CB%CB%BC%C4%EE/blog/item/e057c526c6af6c29c995596e.html _Recor ...

  6. java并发编程实战:第六章----任务执行

    任务:通常是一些抽象的且离散的工作单元.大多数并发应用程序都是围绕"任务执行"来构造的,把程序的工作分给多个任务,可以简化程序的组织结构便于维护 一.在线程中执行任务 任务的独立性 ...

  7. [label][JavaScript] 自动填充内容的JavaScript 库

    一个帮助你针对不同标签自动填入内容的轻量级javascript类库 - fixiejs http://www.gbtags.com/technology/javascript/20120802-fix ...

  8. Jquery 自定义插件写法(示例)

    (function ($) { $.SmsHelper = $.SmsHelper || {}; $.extend($.SmsHelper, { //插件具体实现代码 yzmnum: 60, Ajax ...

  9. css 颜色渐变 兼容性

    参考文献:http://caibaojian.com/css3-background-gradient.html    https://www.cnblogs.com/xzzzys/p/7495725 ...

  10. SEGGER J-Link install

    Why J-Link? In case you wonder why GNU ARM Eclipse decided to provide support to SEGGER J-Link, the ...