一.什么是redis ?

其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL database.

Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server sincekeys can contain stringshasheslistssets and sorted sets.

意思是:redis是一个key-value (键值对) 存储的NoSQL数据库,是开源的,可以用来存储的key的类型分为字符串,哈希,list,set和可排序的set.

二.如何用?

1.下载redis

需要安装一下redis,最新的版本为2.8.9,下载地址为:Redis 2.8.9 is the latest stable version

2.解压redis

下载完成后,ubuntu下执行命令进行解压:

tar -zxvf redis-2.8..tar.gz 

3.启动redis

cd redis-2.8.
#首先,编译redis
make
#其次,启动redis
cd src
./redis-server

4.连接redis

    cd src
./redis-cli
redis> ping
PONG
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer)
redis> incr mycounter
(integer)
redis>

连接好了以后就可以使用redis了.

三.redis常用命令

如果不想安装redis,可以直接在线学习redis:http://try.redis.io/

同时,也可以直接查看其命令:http://redis.io/commands

1.第一组命令(set get ):

  • set命令
  • get命令
  SET server:name "fido"
GET server:name => "fido"

这样就进行了赋值和取值,server:name就是key,value就是"fido".

2.第二组命令(自增.自减):

  • INCR命令
  • DEL命令
  • DECR命令
127.0.0.1:> set a
OK
127.0.0.1:> decr a
(integer)
127.0.0.1:> incr a
(integer)
127.0.0.1:> del a
(integer)
127.0.0.1:> get a
(nil)

INCR是自增命令,默认每执行一次INCR命令自增1,而DECR则是自减命令,每次自减1,del则是删除指定的key.

INCR是原子性命令,对于其数据修改,要么全都执行,要么全都不执行.

3.第三组命令(超时):

  • EXPIRE命令
  • TTL命令
    SET resource:lock "Redis Demo 1"
EXPIRE resource:lock
TTL resource:lock =>
SET resource:lock "Redis Demo 2"
TTL resource:lock => -

EXPIRE命令是设置超时命令的,即如上面的例子,resource:lock只能存在120秒,超时即被删除.

TTL命令是查看key剩余存活时间.

4.第四组命令(list):

  • RPUSH
  • LPUSH
  • LLEN
  • LRANGE
  • LPOP
  • RPOP
    RPUSH friends "Alice"
RPUSH friends "Bob"

RPUSH是每次都将value添加到list的最后面.

 LPUSH friends "Sam"

LPUSH 是每次都将value添加到list的最前面.

    LRANGE friends  - => ["Sam","Alice","Bob"]
LRANGE friends => ["Sam","Alice"]
LRANGE friends => ["Alice","Bob"]

LRANGE key 0 -1表示查看所有list的value,如果是大于-1的数值,例如0 1,则表示显示下表为0到1的值.

由lrange输出可以看出,lpush 'sam'是后添加的数据,却排到了最前面.

  LLEN friends => 

LLEN key 表示的输出list的长度.

 LPOP friends => "Sam"

LPOP表示删除第一条数据,并且回显删除的数据,与上面的LPUSH相反,这里要特别注意,别搞混了.

  RPOP friends => "Bob"

RPOP则与LPOP相反是删除list最后一条数据.

 5.第五组命令(set):

set命令与list命令非常相似,但不同的是,其是无序的,值只能出现一次的,值不能重复出现,key和value是一对多的关系.

  • SADD
  • SREM
  • SISMEMBER
  • SMEMBERS
  • SUNION
    SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"

SADD命令即是将值添加到set中.

SREM superpowers "reflexes"

SREM表示删除set中的指定的value.

    SISMEMBER superpowers "flight" => true
SISMEMBER superpowers "reflexes" => false

sismember判断值到底是不是SET中的,是就返回true,不是,就返回false.

SMEMBERS superpowers => ["flight","x-ray vision"]

SMEMBERS返回所有的value.

    SADD birdpowers "pecking"
SADD birdpowers "flight"
SUNION
superpowers birdpowers => ["flight","x-ray vision","pecking"]

SUNION合并两个SET集体,由于set是无序的,所以这里顺序是不确定的.

6.第六组命令(sorted set):

  • ZADD
  • ZRANGE
    ZADD hackers  "Alan Kay"
ZADD hackers "Grace Hopper"
ZADD hackers "Richard Stallman"
ZADD hackers "Yukihiro Matsumoto"
ZADD hackers "Claude Shannon"
ZADD hackers "Linus Torvalds"
ZADD hackers "Sophie Wilson"
ZADD hackers "Alan Turing"

ZADD将数据添加到有序set集合中,进行自动排序.

ZRANGE hackers   => ["Claude Shannon", "Alan Kay","Richard Stallman"]

ZRANGE表示输出指定范围的数据.

7.第七组命令(HASH)

  • HSET命令
  • HGETALL命令
  • HMSET命令
127.0.0.1:> hset user: name 'amosli'
(integer)
127.0.0.1:> hset user: email 'hi_amsli@outlook.com'
(integer)
127.0.0.1:> hset user: password ''
(integer)
127.0.0.1:> hgetall user:
) "name"
) "amosli"
) "email"
) "hi_amsli@outlook.com"
) "password"
) ""

HASH与JAVA中的Map集合非常类似,一个key对应一个value.

HSET命令就是set指定的key和value.

HGETALL命令即是指获取所有的key-value

127.0.0.1:> hmset user: name 'hiamos' password '' email 'hi_amosOKutlook.com' 

HMSET一次性设置多个key-value

8.第八组命令

  • HINCRBY
  • HDEL
    HSET user: visits 
HINCRBY
user: visits =>
HINCRBY user: visits =>
HDEL
user: visits
HINCRBY user: visits =>

HINCRBY可以理解为加法,将一个值加上另一个值.

HDEL则是删除.

9.第九组命令

  • flushall
  • brpop
  • keys
  • client list

flushall:将所有数据清空.

brpop:阻塞,只到有数据返回,有数据时删除list中的最后一条并返回.

keys:查询匹配规则的所有key

redis> MSET one  two  three  four
OK
redis> KEYS *o*
) "one"
) "four"
) "two"
redis> KEYS t??
) "two"
redis> KEYS *
) "one"
) "three"
) "four"
) "two"

client list:列出client的相关内容

127.0.0.1:> client list
addr=127.0.0.1: fd= name= age= idle= flags=N db= sub= psub= multi=- qbuf= qbuf-free= obl= oll= omem= events=r cmd=client

半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9的更多相关文章

  1. Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]

    1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...

  2. ubuntu 12.04 安装 redis

    原文地址:http://ijonas.com/software-development/nosql/412/ 1 Installing Redis 2.6.x on Ubuntu 12.04 and ...

  3. Ubuntu 12.04 安装Redis并设置主从复制

    今天想在Ubuntu上安装一个Redis服务器并配置Master-Slave,一开始懒得连VPN就查了一些国内的文章,不知道是没有亲自验证过的转载文章,还是版本问题造成的,发现按照步骤都没能成功完成配 ...

  4. ubuntu 12 install redis

    ubuntu 12 install redis 今天开始写数据server部分,大家初步的方案是用redis+mysql 所以要安装,下面记录安装的基本过程,留做后续参考 unbuntu 12 已经支 ...

  5. GAMIT 10.50在Ubuntu 12.04系统下的安装

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/162.html?1456480908 摘要:GAMIT/GLOBK是一套安装于Unix/L ...

  6. ubuntu 12.04内核升级到3.13.1

    1.背景:今天上午连接Android调试之后,突然又出现了无法识别usb的问题.具体表现为:除usb无线网卡有效外,其他usb设备包括usb鼠标.u盘.android手机插上后都没反应.dmesg一直 ...

  7. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...

  8. 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

    原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码       ...

  9. 基于Ubuntu 14.04 LTS编译Android4.4.2源码

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...

随机推荐

  1. Raspberry pi之wifi设置-3

    1.配件套装里最好有wifi网卡,非常小如下图 插入Raspberry pi的USB口,用lsusb来查看USB设备列表如下 pi@raspberrypi~/Desktop $ lsusb Bus 0 ...

  2. spring资料

    spring的官方文档还是很全面的: http://link.zhihu.com/?target=http%3A//docs.spring.io/spring/docs/current/spring- ...

  3. 机器学习笔记——autoEncoder使用

    前向传播与反向传播 十.参考文献 [1]http://blog.csdn.net/changyuanchn/article/details/15681853

  4. jQuery validate兼容IE8写法

    最近做项目的时候遇到一个validate插件在IE8下面点击submit按钮没有执行检查的BUG 在chrome和FF,还有IE9以上都可以.百度了好多文章都没有找到解决方法,后面自己测试找到了问题. ...

  5. 【Python】djangorestframework 基于django框架的接口开发

    官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestfram ...

  6. 三剑客之SED

    Sed功能说明      Sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. [root@old ~]# sed --versio ...

  7. AC 设置DMZ口上网

  8. 使用Plsql将Excel数据导入Oracle数据库

    1.在plsql页面,Tools-->ODBC Importer... 2.配置被导入的excel files 3.选择excel文件 4.选择Excel中要被导入的的sheet工作簿,选择之后 ...

  9. Android开发--页面切换

    1.创建android项目.项目文档如下 2.activity_main布局,Androidv4包里自带的,既然是自带的那么直接拿来用就可以了,当然前提是你得工程里有v4包 <LinearLay ...

  10. .NET ORM工具Pax实战

    Pax是微软的一个ORM读写工具,比NHibernate更好用.可以在项目中用Nuget下载并安装. 可以看到引用中多了 在App.config里设置配置文件如下 <?xml version=& ...