mac下安装使用redis

系统为OS X 10.10.3 (14D2134) ,安装redis过程为:

1.http://redis.io/download下载最新安装包

 

2.安装XcodeXcode可以在https://github.com/iBcker/adcdownload这里找到资源,官网下载速度太慢。OS 10.10好像最高支持Xcode 6.3,所以Xcode版本不要选太高的,比如一开始我安装了Xcode_7.3_beta然后提示这个版本要求的操作系统版本为10.11。为了装redis好像必须安装Xcode,网上没有找到其他不安装Xcode的方式。

 

3.终端进入redis压缩包解压之后的目录中,通过以下命令执行安装

sudo make

sudo make test

sudo make install

 

4.启动和关闭redis服务。上面三条命令执行之后就安装好了,现在可以在终端中通过redis-server启动redis,命令可以在任何路径下执行

 

redis-server回车之后会输出:

 

50456:C 03 Feb 10:28:48.047 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

50456:M 03 Feb 10:28:48.049 * Increased maximum number of open files to 10032 (it was originally set to 2560).

                _._

           _.-``__ ''-._

      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit

  .-`` .-```.  ```\/    _.,_ ''-._

 (    '      ,       .-`  | `,    )     Running in standalone mode

 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379

 |    `-._   `._    /     _.-'    |     PID: 50456

  `-._    `-._  `-./  _.-'    _.-'

 |`-._`-._    `-.__.-'    _.-'_.-'|

 |    `-._`-._        _.-'_.-'    |           http://redis.io

  `-._    `-._`-.__.-'_.-'    _.-'

 |`-._`-._    `-.__.-'    _.-'_.-'|

 |    `-._`-._        _.-'_.-'    |

  `-._    `-._`-.__.-'_.-'    _.-'

      `-._    `-.__.-'    _.-'

          `-._        _.-'

              `-.__.-'

 

50456:M 03 Feb 10:28:48.050 # Server started, Redis version 3.0.7

50456:M 03 Feb 10:28:48.050 * The server is now ready to accept connections on port 6379

 

出现上面的信息表明redis已经启动,输出信息中可以看到绑定的端口是6379,进程ID50456。绑定的端口是固定的,进程ID每次启动可能都不相同。

 

关闭redis服务器可以在其他终端中通过 

sudo kill 50456

命令完成,这条命令执行之后原本启动redis server的终端会输出停止服务的相关信息。

 

检查redis服务器是否在工作

redis-cli

 

如果redis server没有启动,会输出下面的信息

Could not connect to Redis at 127.0.0.1:6379: Connection refused

not connected>

此时命令行是进入到redis状态中,即输入的命令都认为是redis的命令,输入help可以看到redis相关的帮助信息,通过quit命令退出redis命令模式

 

如果redis server已经启动,执行redis-cli会输出下面的信息

127.0.0.1:6379>

这表示服务已经启动,可以执行redis命令,比如最简单的输入命令ping,redis会回复PONG,redis的命令是不区分大小写的

 

 

http://try.redis.io/这里可以找到互动教程,上面是教程说明,页面最下面的文本框可以输入redis命令。

 

redis支持五中数据类型:字符串,哈希,列表,集合,有序集合,所有命令可以在https://redis.readthedocs.org/en/2.4/这个页面中找到

 

 

redis本质上是一个键值对存储系统。我们可以通过set key value方式存入字符串或其他类型数据,然后通过get key的方式读取数据。例如:

 

127.0.0.1:6379> set name redis

OK

127.0.0.1:6379> get name

"redis"

127.0.0.1:6379>

 

incr,del,setnx

incr对一个整数进行递增,能保证操作的原子性

del 删除一个key,以及对应的value

setnx 如果不存在则设置,存在则不设置,set if not exits

127.0.0.1:6379> set number 10

OK

127.0.0.1:6379> incr number

(integer) 11

127.0.0.1:6379> get number

"11"

127.0.0.1:6379> del number

(integer) 1

127.0.0.1:6379> get number

(nil)

127.0.0.1:6379> setnx age 25

(integer) 1

127.0.0.1:6379> get age

"25"

127.0.0.1:6379> setnx age 30

(integer) 0

127.0.0.1:6379> get age

"25"

127.0.0.1:6379>

 

expire,ttl

redis可以指定一个键值对的存活时间,存活时间到达之后键值对会被自动删除,通过expire key seconds设置key的存活时间为seconds,例如expire age 120表示age这个键对应的键值对存活时间为120秒。

ttl命令用于返回一个键值对存活剩余时间,返回-2表明这个键值对已经被删除,返回-1表明这个键值对永久有效,使用set命令之后键值对的生命周期会被重置为永久有效。

127.0.0.1:6379> set server_status true

OK

127.0.0.1:6379> get server_status

"true"

127.0.0.1:6379> expire server_status 180

(integer) 1

127.0.0.1:6379> ttl server_status

(integer) 171

127.0.0.1:6379> ttl server_status  //3分钟之后再次执行,-2表明已经过期被删除

(integer) -2

127.0.0.1:6379> get server_status

(nil)

127.0.0.1:6379> set server_status true

OK

127.0.0.1:6379> ttl server_status  

(integer) -1

127.0.0.1:6379>

 

和列表操作相关的命令主要有rpush,lpush,llen,lrange,lpop,rpop

rpush将新value存放在list的尾部

lpush将新value存放在list的首部

lrange返回列表的子序列,lrange index0 index1,index0inxdex1指定了这个子序列在list中的起始和结束为止,index1=-1表示直到列表的末尾

llen返回列表长度

lpop返回并删除列表头部的元素

rpop返回并删除列表尾部的元素

 

127.0.0.1:6379> rpush typeList php

(integer) 1

127.0.0.1:6379> rpush typeList java

(integer) 2

127.0.0.1:6379> lpush typeList c++

(integer) 3

127.0.0.1:6379> lrange typeList 0 -1

1) "c++"

2) "php"

3) "java"

127.0.0.1:6379> lrange typeList 0 1

1) "c++"

2) "php"

127.0.0.1:6379> lrange typeList 1 2

1) "php"

2) "java"

127.0.0.1:6379> llen typeList

(integer) 3

127.0.0.1:6379> lpop typeList

"c++"

127.0.0.1:6379> rpop typeList

"java"

127.0.0.1:6379> llen typeList

(integer) 1

127.0.0.1:6379> lrange typeList 0 -1

1) "php"

127.0.0.1:6379>

 

和集合操作相关的命令主要有sadd,srem,sismember,smembers,sunion

sadd添加元素到set

sremset中移除元素

sismember测试给定的元素是否为集合中的元素,如果是返回1,否则返回0

smembers返回集合中的所有元素

sunion合并两个或多个集合并返回合并后集合中的所有元素

 

127.0.0.1:6379> sadd strSet redis

(integer) 1

127.0.0.1:6379> sadd strSet mybatis

(integer) 1

127.0.0.1:6379> sadd strSet spring

(integer) 1

127.0.0.1:6379> srem strSet spring

(integer) 1

127.0.0.1:6379> sismember strSet spring

(integer) 0

127.0.0.1:6379> sismember strSet mybatis

(integer) 1

127.0.0.1:6379> smembers strSet

1) "mybatis"

2) "redis"

127.0.0.1:6379> sadd numSet 123

(integer) 1

127.0.0.1:6379> sadd numSet 456

(integer) 1

127.0.0.1:6379> sunion strSet numSet

1) "456"

2) "123"

3) "redis"

4) "mybatis"

127.0.0.1:6379>

 

 

 

 

 

 

posted on 2016-02-04 17:32  CoderTheWorld  阅读(591)  评论(0编辑  收藏  举报

导航