Redis 知识点总结 ( Redis原生命令 ) ( CSDN -《Redis深入浅出》 -- 学习笔记 )

一、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'[email protected]'
		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://phpfamily.org'
	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://phpfamily.org'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 数据类型及相关命令

待补充。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章