`
lobin
  • 浏览: 425106 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Redis

 
阅读更多

 

Redis

 

# tar -zxvf redis-3.0.0.tar.gz

# make

# make PREFIX=/usr/local/redis-3.0.0 install

 

安装hiredis

# cd deps/hiredis

# make install

 

写道
# tree /usr/local/lib
/usr/local/lib
├── libhiredis.a
├── libhiredis.so -> libhiredis.so.0
├── libhiredis.so.0 -> libhiredis.so.0.11
└── libhiredis.so.0.11

0 directories, 4 files

 

写道
# tree /usr/local/include/
/usr/local/include/
└── hiredis
├── adapters
│   ├── ae.h
│   ├── libevent.h
│   ├── libev.h
│   └── libuv.h
├── async.h
└── hiredis.h

 

指定hiredis安装目录

# make PREFIX=/usr/local/redis-3.0.0 install

写道
# tree /usr/local/redis-3.0.0/lib
/usr/local/redis-3.0.0/lib
├── libhiredis.a
├── libhiredis.so -> libhiredis.so.0
├── libhiredis.so.0 -> libhiredis.so.0.11
└── libhiredis.so.0.11

0 directories, 4 files

 

写道
# tree /usr/local/redis-3.0.0/include/
/usr/local/redis-3.0.0/include/
└── hiredis
├── adapters
│   ├── ae.h
│   ├── libevent.h
│   ├── libev.h
│   └── libuv.h
├── async.h
└── hiredis.h

2 directories, 6 files

 

单独安装hiredis

$ tar -zxvf hiredis-1.0.0.tar.gz

$ make

$ make PREFIX=/usr/local/hiredis-1.0.0 install

 

├─include
│  └─hiredis
│      │  alloc.h
│      │  async.h
│      │  hiredis.h
│      │  read.h
│      │  sds.h
│      │
│      └─adapters
│              ae.h
│              glib.h
│              ivykis.h
│              libev.h
│              libevent.h
│              libuv.h
│              macosx.h
│              qt.h
│
└─lib
    │  libhiredis.a
    │  libhiredis.so.1.0.0
    │
    └─pkgconfig
            hiredis.pc

 

 

启动

# redis-server

4944:C 12 Oct 05:04:49.824 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

4944:M 12 Oct 05:04:49.832 * Increased maximum number of open files to 10032 (it was originally set to 1024).

4944:M 12 Oct 05:04:49.885 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.

                _._                                                  

           _.-``__ ''-._                                             

      _.-``    `.  `_.  ''-._           Redis 3.0.0 (00000000/0) 32 bit

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

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

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

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

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

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

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

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

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

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

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

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

          `-._        _.-'                                           

              `-.__.-'                                               

 

4944:M 12 Oct 05:04:49.896 # Server started, Redis version 3.0.0

4944:M 12 Oct 05:04:49.920 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

4944:M 12 Oct 05:04:49.923 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

4944:M 12 Oct 05:04:49.924 * The server is now ready to accept connections on port 6379

 

连接

连接到redis可以通过redis提供的redis-cli工具,还可以通过telnet的方式连接到redis。

 

通过redis-cli工具连接到redis

 

# redis-cli

127.0.0.1:6379> help

redis-cli 3.0.0

Type: "help @<group>" to get a list of commands in <group>

      "help <command>" for help on <command>

      "help <tab>" to get a list of possible help topics

      "quit" to exit

 

# redis-cli -h 127.0.0.1 -p 6379

 

通过redis-cli工具还可以不进入命令行模式下直接执行命令:

# redis-cli get hello

"this is c"

# redis-cli set key1 value1

OK

 

# redis-cli get key1

"value1"

 

通过telnet的方式连接到redis

$ telnet 127.0.0.1 6379

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

 

 

 

>telnet 192.168.0.102 6379

 

4944:M 12 Oct 06:14:28.214 * 1 changes in 3600 seconds. Saving...

4944:M 12 Oct 06:14:28.243 * Background saving started by pid 5138

5138:C 12 Oct 06:14:28.275 * DB saved on disk

5138:C 12 Oct 06:14:28.289 * RDB: 0 MB of memory used by copy-on-write

4944:M 12 Oct 06:14:28.345 * Background saving terminated with success

 

通过telnet这种方式连接redis进行操作的话,发送的命令以及接收到的返回数据都是原始的。

 

get key

$-1

set key aaa

+OK

get key

$3

aaa

set key aaaa

+OK

get key

$4

 

aaaa

以上都是一些简单的命令还要理解,开始的时候key不存在,所以返回-1表示不存在,即nil,然后设置key为aaa,返回成功,然后get的时候返回$3\r\naaa,其中$3表示返回的key的值的长度,即aaa的长度为3,然后又设置key为aaaa,返回成功,然后又get的时候返回$4\r\naaaa,其中$4表示返回的key的值的长度,即aa4a的长度为4。

 

下面这个比较复杂

georadius user_geo_table -122.084000 37.421998 1 km WITHCOORD WITHDIST WITHHASH

*1

*4

$32

C9A6B12C3398488AA124A8B48650E077

$6

0.0004

:1367936794516580

*2

$22

-122.08400219678878784

$20

37.42200092243565734

 

 

 

这个命令以经纬度(-122.084000,37.421998)坐标为圆心,搜索附近1000米内的成员项目,并返回这些项目的经纬度坐标、以及距离,从圆心坐标到这个成员项目的距离以及计算的hash值。

这个命令返回的是一个数组,*1表示只搜索到一个成员项目,*4表示每一项里边有4个子项,$32\r\nC9A6B12C3398488AA124A8B48650E077表示返回的成员key,这是一个字符串,$32表示字符串key的长度为32,$6\r\n0.0004表示返回的距离,这也是一个字符串,$6表示字符串key的长度为6,0.0004表示距离为0.0004千米,这里的单位和命令里边指定的单位是一样的,命令里边给定的是什么单位,这里返回的也是什么单位。:1367936794516580表示计算的hash。随后的*2也表示后面的子项也是一个数组,这个数组里边返回的是经纬度坐标,有2个分别表示经度和纬度,$22\r\n-122.08400219678878784表示经度,$20\r\n37.42200092243565734表示纬度,都是字符串类型。

 

命令

 

EXPIRE、timeout、TTL(time to live)区别

EXPIRE 过期时间

timeout 超时时间

TTL 生存时间

其实都指的是过期时间。

 

命令

Redis提供了大量的命令操作。目前总共约197个命令。

 

APPEND

追加操作。如果key存在并且是个字符串,该命令操作在后面进行追加;如果key不存在,则会先创建这个key并将值设置为空字符串。这种情况下类似SET命令操作。

 

APPEND key value

 

APPEND timeseries "fixed-size sample"

 

 

 

AUTH

请求受密码保护的Redis服务器的认证。在允许客户端执行命令操作之前,Redis要求进行密码认证。这是通过配置文件中的requirepass指令来实现的。

AUTH password

 

 

BGREWRITEAOF

通知Redis启动一个AOF(Append Only File, 只追加文件)重写过程。该重写过程将基于当前AOF(Append Only File, 只追加文件)创建一个小的优化版本。如果BGREWRITEAOF命令操作失败,不会出现数据丢失,老的AOF(Append Only File, 只追加文件)将保持原样。如果没有后台进程做持久化,重写过程只由Redis触发。

 

BGREWRITEAOF

 

COMMAND

 

COMMAND

返回Redis支持的所有命令的详细信息。

 

EXISTS

 

EXISTS key [key ...]

返回该key是否存在。

 

 

EXPIRE

 

EXPIRE key seconds

设置key的过期时间,以秒为单位。过期后,该key及对应的值将自动被删除。

过期时间只会被删除或者更新操作清除,如 DEL, SET, GETSET 以及所有 *STORE命令操作。

当通过PERSIST命令将一个key转为持久key时,过期时间也会被清除。

如果使用RENAME命令重命名一个key时,该key关联的TTL生存时间将被传给新的key。

如果使用RENAME命令覆盖更新一个key,如:

存在一个key: key_a,使用RENAME key_b key_a覆盖更新key_a后,不管key_a有没有关联的过期时间,新的key_a将继承key_b的特性。

 

EXPIREAT

 

EXPIREAT key timestamp

 

类似EXPIRE命令。通过指定一个unix时间戳来设置过期时间,以秒为单位,表示从1970年1月日到现在的秒数。

 

FLUSHALL

 

FLUSHALL

从所有DB中删除所有的key,不只是当前选择的DB。执行该命令不会失败。

 

 

FLUSHDB

 

FLUSHDB

从当前选择的DB中删除所有的key。执行该命令不会失败。

 

GET

 

GET key

 

读取操作,只用于读取字符串。如果key不存在,返回null。如果读取key对应的值不是字符串,返回错误。

 

GETSET

GETSET key value

 

原子操作,将key对应的值设置为新值,通过返回更新前的旧的值。如果key存在,但设置的值不是个字符串,则返回错误。

 

HGET

 

HGET key field

返回哈希key中关联field的值。如果哈希key不存在或者哈希key中不存在field,返回null。

 

HSET

HKEYS key

返回指定哈希(key)中所有的field字段(key)

HLEN

HLEN key

返回指定哈希(key)中field的个数。

 

HMGET

HMGET key field [field ...]

返回指定哈希(key)中关联field的值,如果其中某个field字段不存在,对应的返回值为null。

一个不存在的哈希(key)被处理为空哈希,所以如果哈希(key)不存在, HMGET 返回一个null列表。

 

HMSET

HMSET key field value [field value ...]

向哈希(key)中set一组field及对应的值。如果某个field已存在,则覆盖对应的值。如果哈希(key)不存在,将创建一个哈希(key)。

 

 

HSET

HSET key field value

哈希key set操作,该key对应一个哈希结构。在该哈希key中插入一个key为field,value为指定值的key/value。如果该哈希key不存在,则创建一个哈希key,如果field已经存在,则覆盖原来的值。

 

HSETNX

 

HSETNX key field value

尽当哈希(key)中不存在指定field时,向哈希(key)中set该field及关联值。如果哈希(key)不存在,将创建一个哈希(key)。如果该field已存在,则HSETNX 命令不产生影响。

 

HSTRLEN

HSTRLEN key field

返回哈希(key)中指定字段对应值的字符串长度。如果哈希(key)或field不存在,返回0.

HVALS

HVALS key

返回哈希(key)中所有关联的值。如果哈希(key)不存在,则返回空列表。

 

INCR

INCR key

将key对应的值加1.

 

INCRBY

INCRBY key increment

将key对应的值加上指定数值。如果key不存在,则在执行此操作之前,将该key设置为0.如果该key对应值为非法类型或是个字符串(不能表示一个整型数),则返回错误。该操作只能限制在64位有符号整型数上使用。

 

INCRBYFLOAT

INCRBYFLOAT key increment

同INCRBY类似,针对浮点数。

 

 

SET

 

SET key value [EX seconds] [PX milliseconds] [NX|XX]

 

设置key并关联一个字符串。如果该key已经关联一个值,则进行覆盖更新而不管其类型。SET操作执行成功后,之前该key关联的TTL生存时间不再有效。

 

参数选项

从Redis 2.6.12开始支持一些参数设置

EX seconds  设置过期时间,以秒为单位

PX milliseconds 设置过期时间,以毫秒为单位

NX 只用于当key不存在时,设置key并关联到某个值。

XX 只用于到key存在时,设置key并关联到某个值。

 

SETEX

 

SETEX key seconds value

设置key并关联到某个值,同时指定一个过期时间,以秒为单位。该操作等同于:

 

SET mykey value

EXPIRE mykey seconds

 

SETNX

 

SETNX key value

 

尽用于如果key不存在,设置key并关联到某个值。如果该key已经关联一个值,则不执行任何操作。

 

TTL

 

TTL key

 

返回剩余的生存时间(TTL, time to live)

 

 

http://redis.io/commands

http://redis.io/topics/rdd

http://redis.io/topics/protocol

 

 

经线

 

纬线

经度

纬度

建立一下三维直角坐标系

地球表面的两点A,B

那么坐标A的经度为夹角A'Oy1,纬度为夹角A'OA。坐标B的经度为夹角B'Oy2,纬度为夹角B'OB。

 

0
0
分享到:
评论

相关推荐

    Windows版 Redis 5.0.14

    Redis 是一个开源的内存数据结构存储系统,常被用作数据库、缓存和消息代理。在Windows环境下,Redis 的安装和使用与在Linux系统中有所不同。这里我们将详细讨论Windows版Redis 5.0.14的相关知识点。 1. **Redis ...

    StackExchange.Redis Redis客户端

    最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或者是我不会用。没有办法,最好找到了...

    Linux 系统 安装redis redis-5.0.1.tar.gz 安装包

    在Linux系统中安装Redis是一个常见的任务,特别是在搭建服务器或开发基于Redis的数据缓存应用时。Redis是一个开源的、高性能的键值对存储系统,适用于数据缓存、消息队列等多种场景。本文将详细介绍如何在Linux上...

    redis-windows-Redis7.0.0.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多种场景。它以其高效、轻量级的特性,在IT行业中备受青睐,尤其是在互联网领域。在Windows环境...

    redis部署6.2.6最新稳定版文档和程序 redis部署6.2.6最新稳定版文档和程序

    redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和...

    redis在win上的运行脚本redis.bat

    Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。在Windows操作系统上运行Redis,通常需要借助一些额外的工具。标题提到的"redis在win上的运行脚本redis.bat"就是一个帮助用户在Windows环境下启动...

    redis win x64位 及 安装卸载RedisServer服务

    Redis是世界上最受欢迎的开源内存数据结构存储系统,它可以用作数据库、缓存和消息代理。在Windows 64位环境下,Redis的安装和卸载过程是很多开发者和系统管理员需要了解的重要技能。以下是对这些知识点的详细说明:...

    Redis Desktop Manager redis的可视化工具压缩包,解压即用

    Redis Desktop Manager是一款强大的开源图形化界面工具,专为管理和操作Redis键值存储系统而设计。它为用户提供了直观且高效的界面,使得在处理Redis数据库时能够更加便捷。这个压缩包包含的就是这款工具的安装文件...

    Redis-7.0.5-x64 for Windows 64位版 Redis 7.0.5

    Redis是一款高性能的键值对内存数据库,被广泛应用于缓存、数据存储等领域。在这个Windows 64位版本的Redis 7.0.5中,我们能够看到一系列关键组件和配置文件,这使得它能够在Windows环境下运行。以下是关于Redis ...

    Redis 7.0.4 x64位 windows 系统 安装包 Redis7.0.4.zip

    Redis7.0.4.zip,解压缩到D盘根目录后,安装后启动为Windows服务 注意是windows 64位系统才可使用,不支持windows 32位系统使用 已经在Win10,Win11,Windows server 2012系统测试运行可用 使用步骤注意事项: ...

    若依前后端分离版去redis版/无redis版本

    基于前后端分离的应用,无论是否使用Redis,都需要考虑如何进行数据的存储和缓存。下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问...

    Windows 上安装 Redis安装,redis7.2安装到windows上面

    在Windows上安装Redis的过程涉及到多个步骤,包括启用必要的Windows功能、安装WSL2(Windows Subsystem for Linux 2)、设置默认WSL版本以及在Linux环境中安装Redis。以下是对这些步骤的详细说明: 1. **启用...

    redis 免安装 redis客户端 redis-desktop-manager-0.8.8.384

    Redis 是一个高性能的键值数据库,它以键值对的形式存储数据,广泛应用于缓存、消息中间件、实时分析等领域。在 Windows 环境下,通常需要通过安装过程来设置 Redis 服务,但这里提供的资源是“redis 免安装”,意味...

    redis 可视化工具以及免安装redis 绿色版

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储数据库,常用于缓存、消息队列等场景。本文将深入探讨Redis的可视化工具及其免安装绿色版的使用,帮助你更好地管理和操作Redis服务器。 首先,了解...

    Redis使用教程,详解

    Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...

    redis3.0安装包 window 64位

    (1)支持Lua脚本:Redis 3.0支持Lua脚本,可以在Redis中执行脚本,大大提高了Redis的灵活性和可扩展性; (2)可插拔模块化:Redis 3.0提供了可插拔的模块化功能,可以根据用户的需求,自定义模块,实现不同的功能...

    redis++使用说明,windows下编译redis-plus-plus

    "Redis++使用说明,windows下编译Redis-Plus-Plus" 在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后...

    redis 6.0 windows 版本

    Redis是一款高性能的键值存储系统,常用于数据库、缓存和消息代理等场景。它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。在Windows平台上使用Redis,通常需要通过编译源码或者寻找预编译的二进制...

    【ASP.NET编程知识】.net core使用redis基于StackExchange.Redis.docx

    ASP.NET Core 使用 Redis 基于 StackExchange.Redis ASP.NET Core 是一个开源的、跨平台的框架,使用 C# 语言开发。Redis 是一个基于内存的数据存储系统,可以用来存储和处理大量数据。StackExchange.Redis 是一个...

    Redis-6.2.7 Windows 版

    Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。这个"Redis-6.2.7 Windows 版"是针对Windows操作系统编译优化的版本,旨在为Windows用户提供便捷的服务。以下是关于Redis 6.2.7及其在Windows上的...

Global site tag (gtag.js) - Google Analytics