笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面。像其中的mongodb,redis等等。当初也没有深入的去了解Redis,直到自己前段时间在写一个web项目的时候需要用到缓存来进行性能优化我才仔细的来学习Redis。下面我就来说说我自己在学习Redis过程中的一些心得。

Redis是一个nosql数据库,它采用字典结构以键值对的形式将数据全部存储在内存中所以它读写的速度很快,因此很多项目用Redis做缓存用,我也是基于这个想法来学习Redis的。 Redis支持的数据类型分别是字符串(string)、散列(hash)、列表(list)、集合(set)、有序集合(sorted set)这五种。接下来我将仔细介绍下这几种数据结构的用法和对应的命令。

字符串类型:字符串类型是Redis中最基本的数据类型,是其他四种数据类型的基础。它能存储任何形式的字符串(二进制数据、Json对象、图片等),它的最大数据容量是512MB。

常用命令:

   set key value      //赋值

                 get key                //取值

                 keys *                 //查看所有的键

                 exists key            //判断某个键是否存在

                 del key               //删除一个键

                 type key            //获取键的类型

                 incr/decr key     //给键增加/减少一

                 incrby/decrby key increment/decrement     //给键增加/减少一个整数

                 incrbyfloat key increment        //增加浮点数

                 strlen key                             //返回键的长度

                 mset/mget                          //同时设置或者获取多个值

       

     散列类型:散列类型的键值是一种字典结构,存储了字段和字段值的映射。但是字段值只能是字符串,不支持其他数据类型(Redis的其他数据类型也都不支持嵌套,只能是字符串。)。

常用命令:

                hset   key  field value               //赋值。不区分插入和更新操作,当键不存在是会自动建立。

                hget   key  field                       //取值

                hgetall key                              //取出所有的值

                hexists key field                      //判断字段是否存在

                hsetnx key field value              //字段不存在时便赋值

                hincrby key field increment        //增加指定的数字,没有自增

                hdel key field                            //删除一个或者多个字段,返回被删除的个数                

                hkeys key                                 //只获取字段名

                hvals  key                                 //只获取字段值

                hlen   key                                 //只获取字段数量

列表类型:列表是个有序的字符串,向两端添加或者删除元素。它是使用双向链表实现的。

常用命令:

                lpush/rpush  list value                         //向左/右增加元素

                lpop/rpop  list                                     //从左/右弹出元素

                llen list                                              //获列表的元素个数

                lrange list start stop                           //获得列表片段(左边索引为0,如果为负则从右边开始)   lrange  key -1 0 则为获取所有的元素

                lrem list  count value                          //删除列表中前count个值为value的元素

                rpoplpush oldlist newlist                     //将原列表的值放入新列表

       集合类型:集合中的元素都是不同的,而且没有顺序。它可以求交集、并集、差集。

常用命令:

                sadd set member                                  //增加一个元素给集合(没有则创建)

                srem set member                                 //删除一个或多个元素

                smembers set                                     //返回集合中所有的元素

                sismember set member                        //判断元素是否存在于集合中

                sdiff setA  setB                                    //求差集

                sinter setA  setB                                  //求交集

                sunion  setA setB                                 //求并集

                sdiffstore  destination setA setB             //将求到的差集结果保存在destination中

                srandmember  set  num                        //随机获取一个或多个元素(看后面加的参数)            

                spop set                                              //从集合中随机弹出一个元素

有序集合:和集合相比给每个元素都关联了个分数。我们除了可以进行集合的操作外,还可以获取分数最高或者最低的几个元素。

常用命令:

               zadd key score member                         //加入元素和对应分数,支持整数和双精度浮点,如果存在则修改。其中+inf和-inf代表正负无穷大

               zscore  key  member                             //获得元素的分数

               zrange/zrevrange  key start stop             //按分数从顺序/逆序排序

               zrangebyscore  key  min (max                //返回min和max之间的数左括号代表不包含

               zincrby key increment member              //给元素增加值

               zcount key min max                             //获取指定范围元素的个数

               zcard  key                                           //获取集合中元素的数量 

               zrem key member                               //删除元素

               zremrangebyrank  key start stop           //按排名范围删除元素

               zremrangebyscore  key min max           //删除分数范围值

               zrank key member                               //元素按分数大小排名

               zrevrank key member                          //从大到小排名

结语:个人学习总结有遗漏错误的地方还希望大家留言斧正,多多交流一起学习。

新手初学Redis之基础知识命令的更多相关文章

  1. 2、Redis的基础知识

     写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- 主要内容包括: red ...

  2. Redis:基础知识及其常用数据类型和关键字

    Redis: Redis是什么: REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key-Value)分布式内存数 ...

  3. 初学python必备基础知识

    一,编程语言介绍 1.机器语言:直接用二进制编程,直接控制硬件,需要掌握硬件的操作细节 优点:执行效率高   缺点:   开发效率低 2.汇编语言:用英文标签取代二进制指令去编写程序,直接控制硬件,需 ...

  4. 分布式数据库对比评测(Es,mongodb,redis)基础知识篇

    前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...

  5. redis的基础知识

    select切换数据库 remoteSelf:0>select 0 "OK" dbsize查看当前数据库的key数量 remoteSelf:0>dbsize " ...

  6. redis基础知识思维导图

    看到一张redis的基础知识思维导图,比较清晰, 但是没有标明来源,希望知道的给个地址,我也好说明来源 图大小有1M多.在博客上看比较模糊,可以先下载下来查看,或者在浏览器新标签中打开图片查看,就比较 ...

  7. Redis学习---基础学习[all]

    什么是NoSQL型数据库 NoSQL数据库---NoSQL数据库的分类 Redis学习---NoSQL和SQL的区别及使用场景 Redis学习---负载均衡的原理.分类.实现架构,以及使用场景 什么是 ...

  8. 系统和帮助-Linux基础知识

    iOS镜像: 硬盘分区:留出一些空间;实在不成,可安装完成以后,新增一块虚拟硬盘; 终端:terminal 用户界面: GUI:图形界面 GNome KDE CLI: bash,zsh,sh,csh, ...

  9. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

随机推荐

  1. git fetch

    http://www.ruanyifeng.com/blog/2012/07/git.html 流程 默认情况下,git fetch取回所有分支(branch)的更新.如果只想取回特定分支的更新,可以 ...

  2. ios开发证书,描述文件,bundle ID的关系

    苹果为了控制应用的开发与发布流程,制定了一套非常复杂的机制.这里面的关键词有:个人开发者账号,企业开发者账号,bundle ID,开发证书,发布证书(又叫"生产证书"),开发描述文 ...

  3. 轻量级别的Cache和反向代理软件---Varnish

    1.Varnish描述 1.1 Varnish的结构与特点 Varnish是一个轻量级别的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点: 基于内存进行缓存,重启后 ...

  4. Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】

    http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...

  5. FreeRTOS代码剖析

    FreeRTOS代码剖析之1:内存管理Heap_1.c   FreeRTOS代码剖析之2:内存管理Heap_2.c   FreeRTOS(V8.0.1)系统之xTaskGenericCreate() ...

  6. ajax跨域实现api 接口调用

    背景: 想实现跨域去调用接口, 然后同时支持下次调用,能够带cookie信息过来,同时支持来自多个源头的域名的跨域调用. 1.这样支持来自所有域名的跨域调用: 不支持跨域是,浏览器报错: 在api接口 ...

  7. Quick Cocos2dx 与 Eclipse 连真机debug遇到的问题

    今天下午解决了因为偷懒一直忍受的两个让我不爽很久了的问题: 1Eclipse无法连接手机调试的问题. 在设备管理器中看到的Android设备有黄色的感叹号, 说明驱动不是最新的. 按照网上搜到的解决方 ...

  8. java调用C/C++写的dll(转)

    源:java调用C/C++写的dll Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台界面可以更快速,也能带来跨平台性. Java调用C/C++写好的DLL ...

  9. C++中string中的erase函数怎么使用

    erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator p ...

  10. android 后台服务定时通知

    最近有个项目的要求是在程序退出之后,任然可以每天定时发通知,我们可以想下,其实就是后台开一个服务,然后时间到了就发下通知. 1.首先我们需要用到Service类. 先上代码在慢慢解释 package ...