-
Redis: 安装 https://www.iteye.com/blog/lobin-2517094
-
Redis: 客户端 https://www.iteye.com/blog/lobin-2517092
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
/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
/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
/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
/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。
相关推荐
Redis 是一个高性能的键值数据存储系统,常用于缓存、数据库和消息中间件等场景。Redis 3.2 版本是 Redis 社区的一个重要里程碑,它引入了多项新特性和改进,提升了系统的稳定性和性能。在这个版本中,Redis 增强了...
Redis是一款高性能的键值存储系统,常用于数据库、缓存和消息代理等场景。它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。在Windows平台上使用Redis,通常需要通过编译源码或者寻找预编译的二进制...
在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。 首先,你需要从Redis官方网站获取Redis的...
Redis 5.0是Redis数据库的一个重要版本,它在Windows 64位平台上提供了全面的支持。Redis是一款开源的、基于键值对的数据存储系统,常用于缓存、数据库和消息中间件等场景。以下是关于Redis 5.0在Windows 64位环境中...
Redis是一种开源的、基于键值对的数据存储系统,常用于数据库、缓存和消息中间件。在Windows环境下,Redis提供了一个方便的压缩包,让用户能够快速地在Windows操作系统上部署和使用Redis服务,无需复杂的安装过程,...
Redis是一款开源、高性能的键值对存储系统,广泛应用于缓存、数据库和消息中间件等场景。在Windows操作系统上安装和使用Redis可能与在Linux环境下有所不同,但同样提供了方便的工具进行操作。以下是对"Redis windows...
windows redis 7.4.0
Redis是一种开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis可以用作数据库、缓存和消息中间件。Redis在性能、可扩展性和灵活性方面表现出色,因此被广泛应用于Web...
Redis是一种开源的、基于键值对的数据存储系统,常用于数据缓存、消息队列以及数据库功能。在Windows环境下,Redis的安装和使用通常需要经过编译和配置过程。"redis-6.2.14-win-amd64"是专门为Windows AMD64架构编译...
Redis是一个基于内存的key-value结构数据库; Redis特点: 基于内存处理,读写性能高; 适合存储热点数据(热点商品,资讯,新闻); 企业应用广泛。 Redis应用场景: 缓存系统:Redis最基本的用法是作为缓存,用来...
redis配置文件redis.conf
在Windows上安装Redis的过程涉及到多个步骤,包括启用必要的Windows功能、安装WSL2(Windows Subsystem for Linux 2)、设置默认WSL版本以及在Linux环境中安装Redis。以下是对这些步骤的详细说明: 1. **启用...
Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,它支持数据的持久化,可以作为数据库、缓存和消息中间件使用。Redis以其高速度和丰富的数据结构而闻名,广泛应用于互联网服务,如计数...
Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。它以其高效的数据处理能力,丰富的数据结构以及简单易用的API赢得了广大开发者青睐。...
docker上的redis离线镜像redis.tar, 用于在docker上离线安装redis
在IT行业中,C++与Redis的结合使用是一个常见的实践,特别是在需要高性能数据存储和处理的场景下。Redis是一个开源的、基于内存的数据结构存储系统,它支持多种数据类型,如字符串、哈希、列表、集合、有序集合等,...
Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,常用于数据缓存、消息队列和数据库等场景。在Windows环境下安装和使用Redis,可以通过下载对应的二进制压缩包来实现,比如"redis-...
redis 7.0.0 windows版,直接解压即可使用。 Redis 7.0 包括了以下一些重要的变化: 1. 将AOF文件的存储方式改为在一个文件夹下存储多个文件。 2. 将持久化文件RDB的版本升级为10,与之前的RDB文件版本不再兼容。 3....
【宝塔Redis可视化插件】是专为宝塔面板设计的一款高效、易用的数据库管理工具,主要用于管理和监控Redis缓存服务。这款插件通过图形化的界面,使得用户无需深入理解Redis命令行操作,即可轻松完成数据的增删查改、...
基于前后端分离的应用,无论是否使用Redis,都需要考虑如何进行数据的存储和缓存。下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问...