基本安装和用法:http://www.tuicool.com/articles/QzMRNb

Redis如何通过本机客户端访问远程服务器段:http://blog.sina.com.cn/s/blog_4a552a740101kdfz.html

启动redis:./src/redis-server redis.conf

客户端访问redis方式:./src/redis-cli -h [host] -p [port] 或者直接使用src/redis-cli 默认的host :127.0.0.1 ip:6379

reis基本用法-database:虽然redis是按照key-value进行存储,但redis引入了“databse”概念:

  • reids安装key-value的方式存储数据,每个key都属于一个databses;
  • 默认是redis开启了16个database,编号为0~15;
  • 通过redis-cli登录redis后,默认的是第0个databases;

切换databases用>select [DB INDEX] 如:select 12

查看redis各个databases的keys统计信息:>info keyspace

redis基本用法(无所谓大小写):

key pattern==>获得符合规则的键名列表

pattern的格式有:

? 匹配一个字符;

*  匹配任一个(包括0个)字符;

[] 匹配括号中的任意一个字符;

\x 匹配字符x,主要用于转义符号。如需要匹配? 就用\?

set <键名> <值>==>命令建立一个键,如set bar 1;

exists <键名>==>判断一个键是否存在;

DEL <键名>==>删除一个键;

TYPE <键名>==>获得键的数据类型;

字符串类型

Strings:set <key> <value>

      get <key>

     set QQ tecent;

      get qq;

     exists qq;

     APPEND ==>向尾部增加值,用法APPEND key value

     如:SET key hello

       APPEND key " world!"

     STRLEN ==>获取字符串长度,用法 STRLEN key

     MGET ==>同时获取多个键的值,用法 MGET key [key ...]

     MSET ==>同时设置多个键的值,用法 MSET key value [key value...]

位操作

GETBIT key offset

SETBIT key offset value

BITCOUNT key [start] [end]

BITOP operate destkey key [key...]

GETBIT命令可以获取一个字符串类型键指定位置的二进制的值(0或者1),所以从0开始。如:GETBIT foo 0

SETBIT命令和GETBIT命令相对应,设定字符串类型键指定位置的二进制的值,如:SETBIT foo 7 1

BITCOUNT 命令可以获取字符串类型键中值是1的二进制的个数,如:BITCOUNT foo

      同时还可以指定字节的范围,如果我们只想统计前两个字节的,如:BITCOUNT foo 0 1

BITTOP 命令可以对多个字符串类型键进行位运算,并将结果存储在destkey参数指定的键中。

      如:SET foo1 bar

        SET foo2 aar

        BITTOP OR res foo1 foo2  ==>res 的结果是car

integer:

     incr tresss;

     incr 将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

     desr trees;

     INCRBY key increment ==>增加指定的整数;如: INCRBY bar 2

     DECRBY key decrement==>减少指定的整数;如: DECRBY bar 2 等价于 INCRBY bar -2

     INCRBYFLOAT key increment==>增加指定的浮点数;如:INCRBYFLOAT bar 2.7 或者 INCRBYFLOAT bar 5E+4

列表类型(LISTS)

列表类型( list )可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表( double linked list )实现的,所以向列表两端添加元素的时间复杂度为 0(1) ,获取越接近两端的元素速度就越快。这种特性使列表类型能非常快速地完成关系数据库难以应付的场景:如社交网站的新鲜事,我们关心的只是最新的内容,使用列表类型存储,即使新鲜事的总数达到几千万个,获取其中最新的 100 条数据也是极快的。同样因为在两端插入记录的时间复杂度是 0(1) ,列表类型也适合用来记录日志,可以保加入新日志的速度不会受到已有日志数量的影响。

列表两端增加元素

LPUSH key value [value]

RPUSH key value [value]

从两端弹出元素

LPOP key

RPOP key

获取列表片段(最常用命令之一)

LRANGE key start stop

numers ==> "2" "1" "0"

LRANGE numbers 0 2 ==>"2" "1" "0"

LRANGE numbers -2 -1 ==>"1" "0"

删除列表中指定的值

LREM key count value

LREM 命令会删除列表中前 count 个值为 value 的元素,返回值是实际删除的元素个数。根据 count 值的不同, LREM 命令的执行方式会略有差异:

  • 当 count > 0 时 LREM 命令会从列表左边开始删除前 count 个值为 value 的元素;
  • 当 count < 0 时 LREM 命令会从列表右边开始删除前 |count| 个值为 value 的元素;
  • 当 count=0 是 LREM 命令会删除所有值为 value 的元素。如:

redis > RPUSH numbers 2

(integer) 4

redis > LRANGE numbers 0 -1

1) "2"

2) "1"

3) "0"

4) "2"

# 从右边开始删除第一个值为 "2" 的元素

redis > LREM numbers -1 2

(integer) 1

redis > LRANGE numbers 0 -1

1) "2"

2) "1"

3) "0"

获得/设置指定索引的元素值

LINDEX key index

LSET key index value

只保留列表指定片段

LTRIM key start end LTRIM 命令可以删除指定索引范围之外的所有元素,其指定列表范围的方法和 LRANGE 命令相同。就像这样:

redis > LRANGE numbers 0 -1

1) "1"

2) "2"

3) "7"

4) "3"

"0"

redis > LTRIM numbers 1 2

OK

redis > LRANGE numbers 0 1

1) "2"

2) "7"

LTRIM 命令常和 LPUSH 命令一起使用来限制列表中元素的数量,比如记录日志时我们希望只保留最近的 100 条日志,则每次加入新元素时调用一次 LTRIM 命令即可:

LPUSH logs newLog

LTRIM logs 0 99

散列类型(HASH类型)

Redis 是采用字典结构以键值对的形式存储数据的,而散列类型( hash )的键值也是一种字典结构,其存储了字段( field )和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。散列类型适合存储对象:使用对象类别和 ID 构成键名,使用字段表示对象的属性,而字段值则存储属性值。例如要存储 ID 为 2 的汽车对象,可以分别使用名为 color 、 name 和 price 的 3 个字段来存储该辆汽车的颜色 、名称和价格。存储结构如下:

赋值和取值

HSET key field value

HGET key field

HMSET key field value [field value ...]

HMGET key filed [field...]

HGETALL key

注意:HSET命令不区分插入还是更新操作,这意味着修改数据时不用实现判断字段是否存在来决定是插入还是更新。当执行的是插入操作时,HSET命令返回值为1,当执行的是更新操作时,HSET命令的返回值是0。

      hset car color white;

      hmset car name aodi price 90;

     hget car color;==>"white";

     hmget car name price;==>"aodi 90"

     hgetall myhash;==>"color" "white" "name" "aodi" "price" "90"

判断字段是否存在 HEXISTS

HEXISTS KEY field

如:HEXISTS car model ==>0 不存在

当字段不存在时赋值 HSETNX

HSETNX key field value

增加数字 HINCRBY

HINCRBY key field increment

如:HINCRBY person score 60 ==>之前person不存在的话,该语句的值为60

删除字段 HDEL

HDEL key field [field...]

如:HDEL car price

获取字段名

HKEYS key 如:HKEYS car ==>"color" "name" "price"

HVALS key 如:HVALS car==>"white" "aodi" "90"

获取字段数量

HLEN KEY 如:HLEN car ==> 3

集合类型

集合的话是存储不重复的键;

集合是用值为空的散列表(hash table)实现的,他利用了散列表字段唯一的特性实现了不重复的键的功能;

同样也是因为散列表的原因,集合类型的查找非常方便,只需要O(1)的复杂度。

增加/删除元素

SADD key member [member ...]

SREM key member [member ...]

获得集合中的所有元素

SMEMBERS key

判断元素是否在集合中

SISMEMBER key member

集合间的运算

SDIFF key [key ...] 求差。甚至可以是 SDIFF setA setB setC ==>setA -setB-setC

SINTER key [key ...] 求交。

SUNION key [key...] 求并。

求集合中元素个数

SCARD key

进行集合运算并将结果存储

SDIFFSTORE destination key [key …]

SINTERSTORE destination key [key …]

SUNIONSTORE destination key [key …]

     sadd myset sky;

     sadd myset moon;

     

    sismember myset sky;判断 sky 元素是否集合 myst 的成员。是怎返回1 不是则返回0;

    smembers myset;==>"key" "moon".返回集合 key 中的所有成员。

    sinter myset myset2;求交集:求myset 和myset2的共同元素;

    sdiff myset myset2;求差集:myset-myset2;

    sunion myset myset2;求并集:myset U myset2;

sorted sets:

     zadd z1 1 mon;

   zadd z1 2 tur;

   zadd z1 3 wen;

    

   zscore z1 tur==>"2"

   zcard z1==>"3

   zrange z1递增排序

   zrevrange z1 0 2==>"wen" "tur" "mon"

   ZREVRANGE key start stop [WITHSCORES], 返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。具有相同 score 值的成员按字典序的逆序(reverse lexicographical order)排列。除了成员按 score 值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。

pub/sub:

     Puber>publish ch1 "helloworld"==>2将信息 message 发送到指定的频道 channel。返回值为接收到信息 message 的订阅者数量。

     

    subscribe ch1

    SUBSCRIBE channel [channel ...]订阅给定的一个或多个频道的信息。返回值如下:

    

redis管理:

    auth :AUTH password==>通过设置配置文件中 requirepass 项的值(使用命令 CONFIG SET requirepass password ),可以使用密码来保护 Redis 服务器。如果开启了密码保护的话,在每次连接 Redis 服务器之后,就要使用 AUTH 命令解锁,解锁之后才能使用其他 Redis 命令。如果 AUTH 命令给定的密码 password 和配置文件中的密码相符的话,服务器会返回 OK 并开始接受命令输入。

    

    ping :PING==>使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。

    select [number]:切换到指定索引的数据库;

    quit:退出当前的连接;

    dbsize:统计当前database的keys的数量;

    info memory==>INFO [section]获取当前服务器的状态和统计。

    section包括:Server/Client/memory/Persistence/Stats/Replication/CPU/keyspace;

     save==>SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘,一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由 BGSAVE 命令异步地执行。然而,如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用。

    bgsave==>在后台异步(Asynchronously)保存当前数据库的数据到磁盘,BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。

    flushdb==>清空当前数据库中的所有 key。

    flushall==>清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。此命令从不失败。

    monitor==>监听所有redis服务器接收到的请求,实时打印出 Redis 服务器接收到的命令,调试用。

    shutdown==>SHUTDOWN 命令执行以下操作:

    • 停止所有客户端
    • 如果有至少一个保存点在等待,执行 SAVE 命令
    • 如果 AOF 选项被打开,更新 AOF 文件
    • 关闭 redis 服务器(server)

     SLAVEOF host port==>SLAVEOF 命令用于在 Redis 运行时动态地修改复制(replication)功能的行为。

     通过执行 SLAVEOF host port 命令,可以将当前服务器转变为指定服务器的从属服务器(slave server)。

     如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。

     另外,对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。

     HELP==>如:help asdd

     

redis学习笔记——入门的更多相关文章

  1. Redis 学习笔记-入门

    Redis特点: 1.速度快 2.支持丰富的数据类型:字符串.哈希列表.集合 3.操作具有原子性,所有Redis操作都是原子操作 4.多实用工具,可应用如缓存,消息队列,应用程序中任何短期数据,如we ...

  2. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  3. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

  4. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  5. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  6. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  7. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  8. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  9. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

随机推荐

  1. linux fg bg ctrl + z jobs & 等命令

    fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& 最经常被用到这个用在一个命令的最后,可以把这个命令放到 ...

  2. 微信设置URL之WebApi方式

    微信公众号开发者设置里的URL,现在采用WebAPI的方式,结果一直报“未能正确设置Token”的错误,采用Handler和MVC的方式倒是可以. 解决步骤一,添加服务器IP到白名单. 解决步骤二,确 ...

  3. table 实现 九宫格布局

    九宫格布局 最近遇到一个题目,是实现一个九宫格布局的.实现的效果大概是下图这种这样子的: (鼠标悬浮的时候,九宫格的边框颜色是改变的.) 首先想到的是直接使用<table>进行布局,原因很 ...

  4. UVALIVE 3645 Objective: Berlin

    最大流 .以航班为节点进行最大流. 容量限制进行拆点. 如果时间地点满足可以建一条边. 具体看代码.变量名被修改过了.一开始的变量名可能比较容易看懂 但CE了.可能与库里的变量重复了. AC代码 #i ...

  5. Linux SPI总线和设备驱动架构之一:系统概述【转】

    转自:http://blog.csdn.net/droidphone/article/details/23367051/ 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 硬 ...

  6. urllib url解析学习

    #!/usr/bin/env python # encoding: utf-8 from urllib.parse import * #urlparse:解析url分段 #urlsplit:类似url ...

  7. 使用log4j2分离系统日志与业务日志

    前一篇文章介绍了log4j2 扩展日志级别,支持将系统日志与业务处理日志拆分,现在介绍一下通过日志级别将系统日志与业务日志分类,要达到这个目的很容易,只需要配置一下log4j的xml文件: <? ...

  8. hdu 2461(AC) & poj 3695(TLE)(离散化+矩形并)

    Rectangles Time Limit: 5000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. [BZOJ4756][Usaco2017 Jan]Promotion Counting 树状数组

    4756: [Usaco2017 Jan]Promotion Counting Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 305  Solved: ...

  10. object的hashCode与equals

    JAVA代码:    public static void main(String[] args)    {        Object obj1 = new Object();        Obj ...