一、Redis简要介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。[1]

2性能

下面是官方的bench-mark数据:
测试完成了50个并发执行100000个请求。
设置和获取的值是一个256字节字符串。
Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。
文本执行使用loopback接口(127.0.0.1)。
结果:写的速度是110000次/s,读的速度是81000次/s

如果真要把Redis与Memcached进行对比,参考下图:

使用Memcached,让我感触颇深的是Object Size的问题,由于SQL未作优化直接映射对象,导致缓存对象大于1MB,Memcached就抛了异常。而Redis默认缓存对象512MB,最大支持1GB。至少在缓存对象时,可以有更大的伸缩空间了! 此外,是数据类型。Memcached比较简单,而Redis可以支持更多复杂的数据类型,如HASH、SET、SortedSet等等。

二、安装使用

  1、安装操作命令

    port install redis

2、运行redis命令

redis-server /opt/local/etc/redis.conf

3、查看是否按照成功、使用使用缓存操作。

Holele-Book-Pro:~ user$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> get mykey
(nil)
redis 127.0.0.1:6379>

  

三、Redis常用操作使用命令。    

  1、append key value    

redis 127.0.0.1:6379> EXISTS mykey
(integer) 0
redis 127.0.0.1:6379> append mykey "www.sdgou.com"
(integer) 13
redis 127.0.0.1:6379> append mykey " welcome"
(integer) 21
redis 127.0.0.1:6379> get mykey
"www.sdgou.com welcome"
redis 127.0.0.1:6379>

  2、bitcount key [start] [end]

redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> get mykey
(nil)
redis 127.0.0.1:6379> set mykey "http://www.sdgou.com"
OK
redis 127.0.0.1:6379> bitcount mykey
(integer) 93
redis 127.0.0.1:6379> bitcount mykey 0 0
(integer) 3
redis 127.0.0.1:6379> bitcount mykey 1 1
(integer) 4
redis 127.0.0.1:6379>

3、bitop operation destkey key [key...]  

  • bitop and destkey srckey1 srckey2 srckey3 ... srckeyN
  • bitop or destkey srckey1 srckey2 srckey3 ... srckeyN
  • bitop xor destkey srckey1 srckey2 srckey3 ... srckeyN
  • bitop not destkey srckey

      位运算,按位与、按位或、按位异或、按位非

   

redis 127.0.0.1:6379> set mykey1 1
OK
redis 127.0.0.1:6379> set mykey2 1
OK
redis 127.0.0.1:6379> bitop and myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"1"
redis 127.0.0.1:6379> set mykey2 0
OK
redis 127.0.0.1:6379> bitop and myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"0"
redis 127.0.0.1:6379> bitop or myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"1"
redis 127.0.0.1:6379> set mykey1 0
OK
redis 127.0.0.1:6379> bitop or myresult mykey1 mykey2
(integer) 1
redis 127.0.0.1:6379> get myresult
"0"

  4、decr  key  value

redis 127.0.0.1:6379> set key1 "10"
OK
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> decr key1
(integer) 9
redis 127.0.0.1:6379> get key1
"9"
redis 127.0.0.1:6379> set key1 "12312434325325254364654745"
OK
redis 127.0.0.1:6379> decr key1
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> get key1
"12312434325325254364654745"
redis 127.0.0.1:6379> redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> set key1 "10"
OK
redis 127.0.0.1:6379> get key1
"10"
redis 127.0.0.1:6379> decr key1
(integer) 9
redis 127.0.0.1:6379> get key1
"9"
redis 127.0.0.1:6379> decr key1
(integer) 8
redis 127.0.0.1:6379> get key1
"8"
redis 127.0.0.1:6379>

  5、decrby key value

redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> get key1
(nil)
redis 127.0.0.1:6379> set key1 "20"
OK
redis 127.0.0.1:6379> decrby key1
(error) ERR wrong number of arguments for 'decrby' command
redis 127.0.0.1:6379> get key1
"20"
redis 127.0.0.1:6379> decrby key1 5
(integer) 15
redis 127.0.0.1:6379> decrby key1 4
(integer) 11
redis 127.0.0.1:6379> get key1
"11"
redis 127.0.0.1:6379>

  6、get key

  

redis> GET nonexisting
(nil)
redis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
redis>

  7、getbit key offset

redis> SETBIT mykey 7 1
(integer) 0
redis> GETBIT mykey 0
(integer) 0
redis> GETBIT mykey 7
(integer) 1
redis> GETBIT mykey 100
(integer) 0
redis>

  8、getrange key start and

redis> SET mykey "This is a string"
OK
redis> GETRANGE mykey 0 3
"This"
redis> GETRANGE mykey -3 -1
"ing"
redis> GETRANGE mykey 0 -1
"This is a string"
redis> GETRANGE mykey 10 100
"string"
redis>

  9、getset key value

(integer) 0
redis 127.0.0.1:6379> del key1
(integer) 1
redis 127.0.0.1:6379> incr key1
(integer) 1
redis 127.0.0.1:6379> get key1
"1"
redis 127.0.0.1:6379> getset key1 "0"
"1"
redis 127.0.0.1:6379> get key1
"0"
redis 127.0.0.1:6379> set key2 "hello"
OK
redis 127.0.0.1:6379> getset key2 "sdgou.com"
"hello"
redis 127.0.0.1:6379> get key2
"sdgou.com"
redis 127.0.0.1:6379>

  10、incr key

redis 127.0.0.1:> set mykey ""
OK
redis 127.0.0.1:> get mykey
""
redis 127.0.0.1:> incr mykey
(integer)
redis 127.0.0.1:> get mykey
""
redis 127.0.0.1:>

   11、incrby key increment

edis> SET mykey "10"
OK
redis> INCRBY mykey 5
(integer) 15
redis>

  12、incrbyfloat key increment

redis> SET mykey 10.50
OK
redis> INCRBYFLOAT mykey 0.1
"10.6"
redis> SET mykey 5.0e3
OK
redis> INCRBYFLOAT mykey 2.0e2
"5200"
redis>

  13、mget key [key...]

redis> SET key1 "Hello"
OK
redis> SET key2 "World"
OK
redis> MGET key1 key2 nonexisting
1) "Hello"
2) "World"
3) (nil)
redis>

  14、mset key value [key value ...]

edis> MSET key1 "Hello" key2 "World"
OK
redis> GET key1
"Hello"
redis> GET key2
"World"
redis>

  15、msetnx key value [key value ...]

redis> MSETNX key1 "Hello" key2 "there"
(integer) 1
redis> MSETNX key2 "there" key3 "world"
(integer) 0
redis> MGET key1 key2 key3
1) "Hello"
2) "there"
3) (nil)
redis>

  16、psetex key milliseconds value

redis> PSETEX mykey 1000 "Hello"
OK
redis> PTTL mykey
(integer) 998
redis> GET mykey
"Hello"
redis>

  17、set key value [EX seconds] [PX milliseconds] [NX|XX]

edis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
redis>

  18 、setbit  key offset value

redis> SETBIT mykey 7 1
(integer) 0
redis> SETBIT mykey 7 0
(integer) 1
redis> GET mykey
"\u0000"
redis>

 19、setex   key seconds value

redis> SETEX mykey 10 "Hello"
OK
redis> TTL mykey
(integer) 10
redis> GET mykey
"Hello"
redis>

  20 、setnx   key value

edis> SETNX mykey "Hello"
(integer) 1
redis> SETNX mykey "World"
(integer) 0
redis> GET mykey
"Hello"
redis>

 21 setrange key offset value

redis> SET key1 "Hello World"
OK
redis> SETRANGE key1 6 "Redis"
(integer) 11
redis> GET key1
"Hello Redis"
redis>

  22、strlen  key

redis> SET mykey "Hello world"
OK
redis> STRLEN mykey
(integer) 11
redis> STRLEN nonexisting
(integer) 0
redis>

  

mac os x用macport安装redis的更多相关文章

  1. mac os 10.10上安装my eclipse显示virtual memory不足,解决方案

    mac os 10.10上安装my eclipse显示virtual memory不足,安装失败. 自从把OS 升级到10.10 之后, 各种问题, 安装的时候向导提示提示我们说没有足够的虚拟内存, ...

  2. Sqlite在Windows、Linux 和 Mac OS X 上的安装过程

    一:在 Windows 上安装 SQLite 1,下载 请访问SQLite下载页面http://www.sqlite.org/download.html,从Windows 区下载预编译的二进制文件.需 ...

  3. 在Mac OS X 下快速安装Nginx

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; color: #8e68ff } p.p2 { margin: 0.0p ...

  4. 【原创】Mac os 10.10.3 安装xgboost

    大家用的比较多的是Linux和windows,基于Mac os的安装教程不多, 所以在安装的过程中遇到很多问题,经过较长时间的尝试,可以正常安装和使用, [说在前面]由于新版本的Os操作系统不支持op ...

  5. Mac OS X Mountain Lion安装Bochs

    基本步骤可以看这个帖子 http://hi.baidu.com/any_where/item/990c0acdfbd6542c47d5c003 大体是: 1.安装x11; 2.开启Mac OS X的r ...

  6. 在 Mac OS X 10.10 安装 pyenv 的一个小坑

    小记一下. 因为全面转向 Python 3.4 作为主力开发版本,但是手上的 Mac OS X 和服务器上用的都是 Python 2.7,所以需要安装 pyenv. 按其 github 页面的说明,使 ...

  7. Windows下虚拟机安装Mac OS X —– VMware Workstation12安装Mac OS X 10.11

    1下载  镜像:Instal OS X Yosemite 10.10.3(14D131).cdr        密码:qhhm 2 unlocker208文件(链接:https://pan.baidu ...

  8. VirtualBox安装Mac OS 10.11——虚拟机安装黑苹果

    由于需要安装mac环境跑IOS应用,所以在虚拟机装个黑苹果. 一.下载虚拟机安装包,VirtualBox是官网下的最新版:  5.0.6 for Windows hosts x86/amd64  官网 ...

  9. Mac OS 基于 VirtualEnv 的安装 tensorflow 1.3.0

    如果不行的话,就用conda装吧 https://www.jianshu.com/p/d54546ab315e 推荐使用 virtualenv 创建一个隔离的容器, 来安装 TensorFlow. 这 ...

随机推荐

  1. 内置函数 和 select练习3

    19.  查询选修"3-105"课程的成绩高于"109"号同学成绩的所有同学的记录. select * from score where cno='3-105' ...

  2. marquee标签属性详解(跑马灯文字效果)

    请大家先看下面这段代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  3. CSS 控制滚动条样式

    /*作为IT界最前端的技术达人,页面上的每一个元素的样式我们都必须较真,就是滚动条我们也不会忽略.下面我给大家分享一下如何通过CSS来控制滚动条的样式,代码如下:*/ 1 /*定义滚动条轨道*/ #s ...

  4. mysql状态查看 QPS/TPS/缓存命中率查看

    运行中的mysql状态查看   对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态.    (1)QPS(每秒Query量)  QPS = Questions(or Queries ...

  5. 给“.Net工资低”争论一个了结吧!

    昨天我写了一篇<工资低的.Net程序员,活该你工资低>,底下的支持.争吵.骂娘的评论依旧像之前几篇园友的博客一样繁荣.公说公有理,婆说婆有理,这样争吵下去永远没有尽头.数据没有情绪,是公正 ...

  6. 【WPF】提高InkAnalyer手写汉字识别的准确率

    最近项目中需要用到一个手写键盘,我们使用了WPF的InkCanvas+InkAnalyer来开发. 按照文档,一般的代码写法如下: var analyzer = new InkAnalyzer(); ...

  7. [WinAPI] API 6 [操作驱动器挂载点]

    驱动器挂载点,又可以称作卷挂载点.挂载点实际上是操作系统或者用户设置的,用来进入一个逻辑驱动器或者卷的入口.在设置了卷的挂载点后,用户或者应用程序可以使用卷标或者指定的挂载点来进入卷.比如在“C:\” ...

  8. 使用jquery实现简单的拖动效果,分享源码

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkEAAAERCAIAAADzAOSQAAALRklEQVR4nO3dW5LaaAKEUfa/NkfMGu

  9. 1121 if条件语句练习--输入年月日判断执行

    <script type="text/javascript"> var a=prompt("请输入一个年","请输入年份"); ...

  10. 【Android】Eclipse Memory Analyzer 进行堆内存溢出分析

    MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件.     不同厂家的 JVM 所生成的堆转储文件在数据存储格式以及数据存储内容上有很多区别,但是比较主流的厂家和格式,例如 Sun, HP, ...