一、Redis简介
1. Redis 的发展史
Redis [ Remote Directory Server ] : 远程服务器字典
2. 下载、安装、启动、停止 Redis
- 安装教程 可参照 https://redis.io/download
1》下载安装
wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下载
tar xzf redis-5.0.8.tar.gz 解压
cd redis-5.0.8 切换目录
make 编译
make install 安装
2》可执行的程序在bin下
redis-server: Redis服务器
redis-cli: 命令行客户端
redis-benchmark: Redis的性能测试工具
redis-check-aof: AOF文件修复工具
redis-check-dump: RDB文件检测工具
3》redis.conf 是Redis的配置文件
daemonize yes 修改配置文件配置项,以守护进程的方式来使用
4》启动和停止Redis
直接启动
redis-server
redis-server/ect/redis.conf
停止Redis
shutdown 也可以结束Redis的进程实现停止
3. Redis 的命令返回值
1》状态回复:
ping
SET test ' this is a test'
2》错误回复(错误回复以 error 开始):
(error)ERR unknown command'TESTERROR'
3》整数回复(以 interger 数值):
(integer)2
4》字符串回复(nil 代表空的结果):
GET test
(nil)
5》多行字符串回复:
KEYS * 得到当前数据库中的存在的键名
4. Redis 配置选项相关内容
1》动态设置/获取配置选项的值
获取:
CONFIG GET name
1)"port"
2)"6379"
设置:
CONFIG SET name value
2》Redis配置文件redis.conf选项相关
--连接选项--
port 6379 默认端口
bind 127.0.0.1 默认绑定的主机地址
timeout 0 当客户端闲置多久之后关闭连接,0代表没有启动这个选项
loglevel notice 日志的记录级别
#debug:很详细的信息,适合开发和测试
#verbose:包含很多不太有用的信息
#notice:比较适合生产环境
#warning:警告信息
logfile stdout 日志的记录方式,默认为标准输出
databases 16 默认数据库的数量16个,默认的数据库编号从0开始
--快照--
save <seconds> <changes> 多少秒有多少次改变将其同步到磁盘中数据文件里
save 900 1
save 300 10
save 60 10000
rdbcompression yes 存储本地数据库时是否启用压缩,默认yes
dbfilename dump.rdb 指定本地数据库文件名,默认为dump.rdb
dir./ 指定本地数据库的存放目录,默认是当前目录
5. Redis String 数据类型及相关命令
1》String字符串类型,一个键最多存储 512MB
2》SET: 设置 key 对应的值为 value
语法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
EX seconds:设置键的key的过期时间 SET key value EX seconds--SETEX
PX milliseconds:以毫秒的形式设置过期时间 SET key value PX milliseconds--PSETEX
NX:只有键不存在的时候才可以设置成功 SET key value NX--SETNX
XX:只有key已经存在的时候才可以设置
注意:如果key存在,同名会产生覆盖
SET test16'this is a test16' EX 100
SET test17 ' this is a test17' px 20000
SET test18'this is a test18' NX
SET test18 'this is a test18888' xx
SET test19'this is a test19'EX 100 NX
SET test20 ' this is a test20' EX 100 PX 300000 NX
SET testStr1'this is a test'
3》GET: 根据 key 找到对应的值
语法:GET key
GET testStr1
注意:如果key不存在,返回nil,如果key不是字符串,会报错
4》GETRANGE: 返回字符串中一部分
语法:GETRANGE key start end
GETRANGE testStr2 0 4
GETRANGE testStr2 0-3
GETRANGE testStr2 -4-2
GETRANGE testStr2 0 1000
5》GETSET: 设置指定key的值,并且返回旧的值
语法:GETSET key value
SET testStr3 'king'
GET testStr3
GETSET testStr3 'queen'
注意:当key不存在返回nil,如果key不是字符串,会报错
6》MSET: 一次设置多个键值对
语法:MSET key value [key value...]
MSET testStr5'king'teststr6'maizi'teststr7'queen'
7》MGET: 一次得到多个键值
语法:MGET key key
MGET teststr5 teststr6 teststr7
MGET testStr5 teststr6 teststr7 teststr8
7》MGET:一次得到多个键值
语法:MGET key key
MGET testStr5 testStr6 teststr7
MGET testStr5 teststr6 teststr7 teststr8
8》STRLEN:获取key的字符串长度
语法:STRLEN key
注意:对于不存在key获取其长度返回的0
STRLEN testStr5
9》SETRANGE:相当于字符串替换的效果
语法:SETRANGE key offset value
注意:如果设置的key原来的字符串长度要比偏移量小,就会以零字节(\x00)来填充
SET testStr9 ' hello king'
SETRANGE testStr9 6'queen'
对不存在的key 使用 SETRANGE
EXISTS testStr10
SETRANGE testStr10 5'king'
10》SETNX:只有key不存在才能设置成功
语法:SETNX key value
EXISTS testStr11
SETNX testStr11 'maizi'
GET testStr11
SETNX testStr11
11》SETNX:只有key不存在才能设置成功
语法:SETNX key value
EXISTS testStr11
SETNX teststr11'maizi'
GET testStr11
SETNX testStr11 'maiziedu'
GET testStr11
12》SETEX:设置key并且设置其过期时间
语法:SETEX key seconds value
SETEX expireStr 60 'testExpire'
注意:SETEX是原子性操作,相当于执行了SET key value,又对这个key设置了过期时间
EXPIRE key seconds
SET expireStr1'test1'
EXPIRE expireStr1 10
SETEX test12 1000'a'
GET test12
13》MSETNX:一次设置多个key-value对,只有所有的key都不存在的时候才会成功
语法:MSETNX key value [key value]
MSETNX test13'a'test14'b'test15'c'
MSETNX test15'aa'test16'bb'test17'cc'
13》PSETEX:以毫秒为单位设置key的生存周期
语法:PSETEX key milliseconds value
PSETEX test16 2000'hello world'
PTTL
14》INCR:对key中存储的数字+1
语法:INCR key
SET counter 1
one312
INCR counter
注意:key如果不存在,则会先初始化为,在进行INCR操作如果key存储的不是数字,会报错
INCR counter1
INCR test20
15》INCRBY:将key中存储的数字加上指定增量
语法:INCR BY INCREMENT
SET counter2 10
INCRBY counter2 5
INCRBY counter2 1.2
16》INCRBYFLOAT:给key中存储的数字加上指定的浮点数
语法:INCRBYFLOAT key increment
SET counter3 1
INCRBYFLOAT counter3 1.2
17》DECR:将key中存储的数字减1
语法:DECR key
DECR counter3
18》DECRBY:将key中存储的数值减去指定的值
语法:DECRBY key decrement
DECRBY counter2 3
19》APPEND:通过APPEND将值追加到字符串的末尾
语法:如果key不存在,则相当于执行的SET操作
APPEND testStr11 'edu'
APPEND noExistsStr 'this is a test'
5. Redis Hash 数据类型及相关命令
1》Hash类型在 redis.conf 相关配置项:
hash-max-ziplist-entries 512 512字节
hash-max-ziplist-value64 字段数目
2》HSET:将哈希表key中域field设置成指定的value
语法:HSET key field value
HSET userInfol username'king'
HSET userInfo1 password'123456'
HSET userInfo1 email'382771946@'
HGET userInfo1 username
HSET userInfo1 username 'queen'
如果哈希表key中field不存在,相当于新建field,设置成功返回1
如果哈希表key中field存在,相当于重新赋值,成功返回
3》HGET:返回哈希表key中给定field的值
语法:HGET key field.
HGET userInfo1 username
注意:如果key中field不存在,返回的是nil
4》HSETNX:将hash表中的field设置成指定的值,只要field不存在的时候才可以成功;如果field存在,操作无效
语法:HSETNX key field value
HSETNX testHash1 test'a'
5》HMSET:通过将多个field-value设置到hash表key中
语法:HMSET key field value field value...
HMSET userInfo2 username 'king' password '123' kickname ' smart king' email ' 382771946@qq. com'HGET userInfo2 username
HMSET userInfo2 username 'queen' role 'admin'
6》HMGET:一次获得hash表key中多个field的值
语法:HMGET key field field
注意:如果hash表key中field不存在,会返回nil
7》HGETALL:返回hash表key中所有的field和value
语法:HGETALL key
HGETALL userInfo2
8》HKEYS:返回hash中key的所有的field
语法:HKEYS key
HKEYS userInfo2
9》HVALS:返回hash中key中field所有的对应的值
语法:HVALS key
HVALS userInfo2
10》HEXISTS:检测hash中key的field是否存在
语法:HEXISTS key field
HEXISTS userInfo2 username
HEXISTS userInfo2 notExists
11》HLEN:返回hash表key中field的数量
语法:HLEN key
HLEN userInfo2
12》HINCRBY:给hash中key的field做增量操作
语法:HINCRBY key field increment
HSET userInfo3 age 12
HINCRBY userInfo3 age 10
HSET userInfo3 username 'king'
HINCRBY userInfo3 username 10
13》HINCRBYFLOAT:给hash中key的field做增量浮点操作
语法:HINCRBYFLOAT key field increment
HSET userInfo3 salary'123.111'
HINCRBYFLOAT userInfo3 salary 12.888
14》HDEL删除HASH中key的指定域,可以删除一个也可以删除多个
语法:HDEL key field field
HGETALL userInfo2
HDEL userInfo2 username password email
6. keys相关命令
1》KEYS:返回所有符合给定模式的key
语法:KEYS pattern
*:匹配任意个字符
?:匹配一个任意字符
[]: 匹配[]之间的一个字符,[b-e],a[b-e] ab ac ad ae
\x:匹配特殊字符\? \*
MEST one 1 two 2 three 3 four 4 five 5 six 6 seven 7
KEYS *
KEYS *o*
KEYS c[n-z]*
2》EXISIS:检查执行key是否存在
语法:EXISTS key
EXISTS one
3》TYPE:返回key所存储的类型
语法:TYPE key
不存在的key 返回 none
string
hash
set
zset
list
TYPE testStr1
TYPE userInfo2
4》EXPIRE:设置key的过期时间
语法:EXPIRE key seconds
SET cache_page 'https://'
EXPIRE cache_page 100
注意:如果key已经存在过期时间,在通过EXPIRE设置的时候会覆盖之前过期时间
5》EXPIREAT:需要指定在指定时间截过期
语法:EXPIREAT key timestamp
SET cache_pagel'http://maiziedu.com'
EXPIREAT cache_page1 1431868810
6》PEXPIRE:以毫秒的形式指定过期时间
语法:PEXIRE key milliseconds
SET cache_page2'http://maiziedu.com'
PEXPIRE cache_page2 50000
7》PEXPIREAT:指定时间戳,单位为毫秒
语法:PEXPIREAT key timestamp
SET cache_page3'http://'PEXPIREAT cache_page3 1431968810000000
8》TTL:以秒为单位返回key剩余时间
语法:TTLkey
注意:如果没有key没有设置过期时间,返回-1如果key不存在返回-2
返回过期时间
SET cache_page4'http://www.baidu.com'TTL cache_page4
TTL cache_page5
EXPIRE cache_page4 100
TTL cache_page4
9》PTTL:以毫秒为单位返回key的剩余时间
语法:PTTL key
7. List 数据类型及相关命令
待补充。。。
8. Set 数据类型及相关命令
待补充。。。
9. ZSet 数据类型及相关命令
待补充。。。