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

  • 2017年08月01日 00:44
  • 1.02MB
  • 下载

1-2.Redis初识-谁在使用redis

  • 2016年04月22日 09:22
  • 232KB
  • 下载

初识Redis(一)

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

redis初识

**redis初识**刚进新公司,接触到的第一个项目.需要对数据频繁的进行添加,为了提高效率,所以别人推荐了一款内存数据库.在这里,把每一次学习到的数据库知识写下了。。。Redis背景:****REm...

初识Redis

1. 概述 redis官网定义: Redis is an open source, advanced key-value store. It is often referred to as a...
  • yfkiss
  • yfkiss
  • 2011年12月13日 23:32
  • 2831

4. 初识 redis

使用复制特性来扩展读性能,使用客户端分片来扩展写性能。与 memcached 的区别: redis 能够自动以两种不同的方式将数据写入磁盘,并且 redis除了能够存储普通的字符串键外, 还能存储其他...
  • enlyhua
  • enlyhua
  • 2017年03月26日 16:27
  • 191

Redis入门很简单之四【初识Jedis】

Redis入门很简单之四【初识Jedis】 原文地址:http://hello-nick-xu.iteye.com/blog/2076890 使用Jedis提供的Java AP...

【redis】——初识

1   开篇 是什么         Redis一种数据库。相比我们熟知的mysql,sqlserver,redis是noSQL类型的数据库,也就是说redis是非结构化的数据,数据在其中是以key-...

Redis01初识

转自:http://www.cnblogs.com/shanyou/archive/2012/01/28/2330451.html Redis和JQuery一样是纯粹为应用而产生的,这里记录的是在C...
  • gzp007
  • gzp007
  • 2015年07月31日 13:59
  • 253

初识 PHP redis

官网:http://redis.io/download   windows下 参考着 http://www.cnblogs.com/chenping-987123/archive/2012/01...
  • zqtsx
  • zqtsx
  • 2012年12月17日 15:45
  • 838
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Redis初识(一)
举报原因:
原因补充:

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