Redis初识(一)

原创 2016年08月28日 16:41:59

首先,学习redis之前要给自己提出几个问题。
1、什么是redis?
2,、redis的使用?
3、redis的原理?
4、redis适合的应用场景?
那么,接下来,先解决第一个问题,什么是redis:
    reidis的介绍网上有很多,不多说,红色标记一下重点。
      Redis 是一个开源(BSD许可:是一个给于使用者很大自由的协议,BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redis 内置了 复制(replication), LUA脚本(Lua scripting), LRU驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability).
     你可以对这些类型执行 原子操作 , 列如: 字符串(strings)的append 命令散列(hashes)的hincrby命令列表(lists)的lpush命令集合(sets)计算交集sinter命令, 计算并集union命令 和 计算差集sdiff命令; 或者 在有序集合(sorted sets)里面获取成员的最高排名zrangebyscore命令.
     为了实现其卓越的性能, Redis 采用运行在 内存中的数据集工作方式. 根据使用情况, 可以每隔一定时间将 数据集导出到磁盘 , 或者 追加到命令日志中. 您也可以关闭持久化功能,将Redis作为一个高效的网络的缓存数据功能使用.
     Redis 同样支持 主从复制(能自动重连和网络断开时自动重新同步),并且第一次同步是快速的非阻塞式的同步.
其他功能包括:

您可以使用 大多数的编程语言 来使用Redis.
     Redis 使用 ANSI C 编写并且能在绝大Linux系统上运行,基于BSD协议,对OS X没有外部依赖. 我们支持Linux 和 OS X两种系统的开发和测试,我们推荐使用Linux部署. Redis 可以像SmartOS一样运行在Solaris系统中, 但是我们会最大力度的支持它. 官方不支持Windos版本的Redis,但微软开发和维护着支持win-64 的Redis版本.
------------------------------------------------------------分割线----------------------------------------------------------------------
redis作为一个非关系型数据库,命令行比较多,现在只是针对最常用的操作数据类型的命令说明:
String类型:1、set key value 增加数据
                    2、setnx key value  仅仅当key不存在时才能set成功,返回1,否则0;
                    3,、setex key seconds value 设置key的过期时间单位秒
                    4、mset key value [key value ...] 同时设置多个key value
                    5、msetnx  只用当key不存在时才能set 成功
                    6、get key 获取key 的value
                    7、mget 获取多个key的value
                    8、getrange key start end 获取存储在key中value的字串。字符串的截取有start和end决定
                    9、getset key value 设置key的value,并返回key的旧值
                    10、append key value key存在,在旧值后追加,不存在直接set
                    11、setrange key offset value 重写key的值得一部分,由offset决定
                    12、incr key 中如果存储的是数字,则可以通过incr递增key的值,返回递增后的值。如果key不能存在,视为初始值为0
                    13、incrby key increment 用increment 指定步长,增加key存储的值,如果步长是负数则减
                    14、decr 与incr相反,decrby与incrby相反
                    15、del key [key] 删除key 并返回删除的个数
                    16、strlen key 获取key中value的长度
                    更多详细参考:http://redis.cn/commands.html#string


散列类型:1、hset key field value 将哈希表key的域field的值设为value
                   2、hget key field 返回哈希表key指定的field的值
                   3、hsetnx key field value 设置哈希表key的field的值,并且field不能存在,否则操作无效
                    4、hmset key field value [field value ...] 设置多个field的value
                    5、hmget key field field1 ,,,,获取多个field
                    6、hgetall key 获取key的所有的field 和 value
                    7、hdel key field1 field2 。。。删除多个field 和value
                    8、hlen key 返回哈希表中所有field的个数
                    9、hexists key field 判断哈希表中的field是否存在
                    10、hkeys key 返回key对应的所有field
                    11、 hvals key 获取哈希表中所用的values
                    12、hincrby key field  increment 根据给定increment ,对key的field的值进行增长
                    更多详细参考:http://redis.cn/commands.html#hash


列表list类型:

1、lpush key value[value] 把一个或多个元素插入表头。如果是多个value时,按照从左到右的次序插。返回插入元素的个数
                      2、lpushx key value 插入一个表头元素,当且仅当列表key存在时,才能插入。返回列表中元素的个数
                      3、rpush key [value] 将一个或多个值插入到队列的队尾。多值时,从左到右依次添加。返回列表中元素个数
                    4、rpushx key value  讲值插入到列表队尾,当且仅当列表key存在时,才添加。返回列表元素个数
                    5、linsert key before|after pivot value 将值插入到pivot的前面或后面。返回列表元素个数。如果参照点pivot不存在不插入。如果有多个pivot,以离表头最近的为准
                    6、lindex key index 根据index查找value
                    7、lrange key start stop  获取指定开始和结束范围的一些列元素
                    8、lset key index value 设置列表指定索引的值,如果指定索引不存在则报错
                    9、ltrim key start stop 保留指定区域的元素,其他元素全部删除
                    10、lrem key count value 移除等于value的元素,当count>0时,从表头开始查找,移除count个;当count=0时,从表头开始查找,移除所有等于value的;当count<0时,从表尾开始查找,移除|count| 个。
                    11、rpop key 移除并返回表尾元素
                    12、lpop key 移除并返回表尾元素
                    13、llen key 获取列表长度
                    更多详细参考:http://redis.cn/commands.html#list


set集合类型:
                     1.sadd key vaule  往集合中插入一个元素,如果value值已存在集合中,则返回0,不会被重复插入。
                     2.sinter key1 key2 ... keyN  取出n个key之间的交集。比如 key1里面有值a,b,c,d,e,key2里面有d,e,f,sinter key1 key2返回d,e。
                     3.sunion key1 key2 ... keyN  取出n个key之间的并集。比如 key1里面有值a,b,c,d,e,key2里面有d,e,f,sunion key1 key2返回a,b,c,d,e,f。
                     4.sdiff  key1 key2  取出n个key之间的差集。比如 key1里面有值a,b,c,d,e,key2里面有d,e,f,sdiff key1 key2返回a,b,c;反过来sdiff key2 key1返回f。
                     5. smembers key  返回key集合中所有的元素,结果是无序的。
                     6. sismember key value  查看value这个值是否在key集合中。存在返回1,不存在返回0。
                     7. scard key  返回集合中有多少个元素。
                     8. smove key1 key2 value  把value从key1中移到key2中去。
                     9.srem key value1 value2 ... valueN  从key集合中删掉某些元素。
                    更多详细参考:http://redis.cn/commands.html#set


sorted sets有序集合类型:

1、zadd key score member [[score member] [score member] ...]  增加一个或多个member【根据score排序】到有序集key中,如果member已经存在,只更新score。返回增加member个数,不包含已经存在的member
                                        2、zrange key start stop [withscores]  返回有续集key中指定范围【通过索引 start stop】的member[及其score];
                                        3、zcount key min max 统计key中score值介于min 和max之间的member个数
                                        4、zscore key member 返回有续集key中member的score
                                        5、zrevrange key start stop [withscores] 返回有续集key中指定范围[通过索引start stop]的member[及score],返回member根据score按降序排列
                                       6、zrangebyscore key min max [withscores] [limit offset count] 返回有续集key中,score大于等于min并且小于等于max的member。返回结果按照score递增的次序排列。可选withscores决定返回结果集中仅仅返回member还是返回member和score;可选参数limit 指定返回结果的数量区间。
                                       7、zrevrangescore key max min [withscores] [limit offset count] 返回有续集key中score<=max并且score>=min 的元素,返回结果根据score从大到小顺序排列。可选参数withscores决定结果集中是否包含score,可选参数limit 指定返回结果集范围。
                                       8、zrank key member 根据score从低到高,返回member在有续集中的index
                                       9、zrevrank key member 根据score从高到低排序,返回member在有序集key中的index
                                       10、zcard key 返回有续集key的基数
                                       11、zincrby key increment member 有续集key的member增加增量increment,返回增加后的score
                                        更多详细:http://redis.cn/commands.html#sorted_set

有人问为什么redis效率比mysql快?


个人觉得,mysql是持久化存储,数据要存储在磁盘上,就要涉及到IO。而redis是内存存储,简单的key-value 形式存储,所以效率会快一点。
    


版权声明:本文为博主原创文章,未经博主允许不得转载。

【redis 基础篇一】redis初识

在JDB来了差不多一个月的时间了,在了解公司业务和框架的过程中,看到了在通过上游调用接口的过程中,使用到了redis来调用值,上游将一个参数传过来,我们通过这个参数去redis中读取部分参数,然后将所...
  • huo065000
  • huo065000
  • 2016年02月28日 18:57
  • 671

《redis实战》读书笔记-第一章:初识redis

redis是一个速度非常快的非关系数据库,他可以存储键与5种不同类型的值之间的映射,可以将储存在内存的键值对持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展读性能...
  • wangnan9279
  • wangnan9279
  • 2017年02月23日 11:11
  • 368

《汇编语言》读书笔记(1) 初识汇编

对我这样长期从事.Net开发的程序员而言,汇编是低级得不能再低级的语言,充满了神秘和艰涩。随着对汇编语言理解的深入,越来越领会到其中的魅力。下面是对汇编相关的一些基础知识的初步了解...
  • jiangnii
  • jiangnii
  • 2010年06月06日 13:17
  • 220

Redis学习(一)-----初识redis

简介Redis是一种非结构化的数据库,将数据采用键值对的形式存储在内存中,由于存储在内存中,所以运行很快。为什么快? 所有的数据都是放在内存中进行管理的,当然比存储在外存的结构化数据库快 是用C语言实...
  • luo_chosen_1
  • luo_chosen_1
  • 2017年10月15日 13:15
  • 76

初识Redis(一)

初识Redis(一)
  • zouhuu
  • zouhuu
  • 2017年01月11日 20:50
  • 335

一、初识Redis

1 Redis是什么? 开源 Key-Value的存储服务系统 多数据结构 高性能 2 Redis具有哪些特性 1)速度快 2)持久化 3)多数据结构 4)支持多语言 5)高可用、分...
  • weixin_40106430
  • weixin_40106430
  • 2018年02月06日 15:33
  • 4

一、 初识Redis

Redis是一种基于键值对(key-value)的NoSol数据库,与很多键值对数据库不同的是,Redis中的值可以由String(字符串)、hash(哈希)、list(列表)、set(集合)、zse...
  • qq_30936759
  • qq_30936759
  • 2017年08月31日 09:37
  • 66

初识OpenStack(1)

初识OpenStack 首先 先来说说我与openstack的渊源吧,那是在上个月中旬,学张的一个朋友给我打电话说让一起来搞一个云平台,当时也不知道是什么,就很高兴的答应下来了,到了周末,就过...
  • IT_DREAM_ER
  • IT_DREAM_ER
  • 2016年04月05日 12:22
  • 4322

初识人工智能

人工智能,之所以冠以“”人工“,最主要是因为其模仿人类的思维过程所产生的。而“”智能“”,怎样才算智能呢?前一阵子比较火的智能家居,最主要的形式是通过各种手机APP 或者终端远程控制各种家电开关,这种...
  • oangeli
  • oangeli
  • 2017年01月18日 23:35
  • 258

Redis集群——一主多从配置

在上一篇博客中,讨论了如何在Spring Boot中使用Redis实现缓存。 但是数据库显然单点是不够的,那么如何用redis数据库做缓存集群呢?我们今天就来研究一下。 Redis 支持 ...
  • a60782885
  • a60782885
  • 2017年04月18日 20:22
  • 2468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Redis初识(一)
举报原因:
原因补充:

(最多只允许输入30个字)