Redis的概念及基本命令

Matlab2024a安装教程 点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。 阅读详情

1.Redis是什么

Redis 是完全开源免费的一个高性能的key-value数据库
	内存数据库

Redis 有以下三个特点:
	1)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
	2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储(这些数据类型主要指的的是value的,key是正常的字符串)
	3)Redis支持数据的备份

2.Redis优势

性能极高
	Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型
	Redis支持二进制类型存储。 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子操作
	Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性
	Redis还支持 publish/subscribe(发布/订阅模式), 通知, key值过期等等特性。

3.Redis的下载

Redis官网地址:
	http://redis.io/

Redis最新stable版本下载地址(稳定版本)
	http://download.redis.io/

Redis的源码同时也托管在github上面
	https://github.com/antirez/redis 

windows版本下载地址(官网提供的是Linux版本)
	https://github.com/MSOpenTech/redis/releases
	或者
	https://github.com/dmajkic/redis/downloads

4.Redis的安装

根据自己的情况,新建一个目录,名字为redis(例如,D:\redis),注意路径中不要出现中文字符.
把下载好的Redis的压缩包解压到新建的指定文件夹中,可见一些可执行文件(版本不同可能此处会有区别)
redis-server.exe		redis 服务器
redis-cli.exe			redis 命令行客户端
redis-benchmar.exe		redis 性能测试工具
redis-check-aof.exe		AOF   文件修复工具

5.Redis简单的测试

启动Redis服务器
	开启一个cmd窗口
	使用cd命令切换目录到 D:\redis 
	运行 redis-server.exe redis.windows.conf
		启动成功后会看到启动的图案和启动信息(包括Redis版本、监听端口号等)
	注意:这个服务器的运行窗口不能关闭,如果关闭Redis服务器就停了
	注意:ctrl+c可以也关闭redis服务器

启动Redis客户端
	另开启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了
	切换到redis目录下运行 
		redis-cli.exe -h 127.0.0.1 -p 6379
		或者
		redis-cli.exe
		不加任何参数默认就是127.0.0.1 和 6379

	设置键值对操作 set name briup
	取出键值对操作 get name

	这时候客户端使用shutdown命令可以关闭服务端


注意:
	Redis中命令本身不区分大小写(但是key值是区分
	大小写的),在redis自带的客户端执行相关命令是自带命令格式的提示的

	
客户端常用命令:
clear 清屏
Auth 命令用于检测给定的密码和配置文件中的密码是否相符
Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。
	通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。
Quit 命令用于关闭当前客户端与redis服务的连接。
	一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭
Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
dbsize 查看当前数据库中有多少个key
info   返回redis的相关信息
flushdb  删除当前选择数据库中的所有key
    flushall 删除所有数据库中的数据库

6.Redis配置参数介绍

redis.windows.conf文件中配置项如下:

1)Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程(windows版本中不支持)

	daemonize no

2)当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(windows版本中不支持)

	pidfile /var/run/redis.pid

3)指定Redis监听端口,默认端口为6379

	port 6379

4)绑定的主机地址

	bind 127.0.0.1

5)当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

	timeout 300

6)指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为notice(redis版本不同会有所区别)

	loglevel notice

7)日志记录方式,默认为标准输出

	logfile stdout

8)设置数据库的数量,默认数据库的index为0,可以使用SELECT <dbid>命令在连接上指定数据库id

	databases 16

9)指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

	save <seconds> <changes>

	Redis默认配置文件中提供了三个条件:

	save 900 1

	save 300 10

	save 60 10000

	分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

 

10)指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

	rdbcompression yes

11)指定redis的本地数据库文件名,默认值为dump.rdb

	dbfilename dump.rdb

12)指定redis本地数据库存放目录,默认是./ 可以根据自己的情况更改

	dir ./

13)设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

	slaveof <masterip> <masterport>

14)当master服务设置了密码保护时,slav服务连接master的密码

	masterauth <master-password>

15)设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭

	requirepass briup

16)设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

	maxclients 128

17)指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

	maxmemory <bytes>

18)指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

	appendonly no

19)指定更新日志文件名,默认为appendonly.aof

	appendfilename appendonly.aof

20)指定更新日志条件,共有3个可选值
	no:表示等操作系统进行数据缓存同步到磁盘(快)     
	always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)     
	everysec:表示每秒同步一次(折衷,默认值)

	appendfsync everysec

 

21)指定是否启用虚拟内存机制,默认值为no
	VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中

	vm-enabled no

22)虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

	vm-swap-file /tmp/redis.swap

23)将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0

	 vm-max-memory 0

24)Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的数据大小来设定的,建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不确定,就使用默认值

	 vm-page-size 32

25)设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,在磁盘上每8个pages将消耗1byte的内存。

	 vm-pages 134217728

26)设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4

	 vm-max-threads 4

27)设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启

	glueoutputbuf yes

28)指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

	hash-max-zipmap-entries 64

	hash-max-zipmap-value 512

29)指定是否激活重置哈希,默认为开启

	activerehashing yes

30)指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件

	include /path/to/local.conf

7.Redis支持的数据类型(主要指的value,key一般就是字符串)

string(字符串) hash(哈希) list(列表) set(集合) zset(sorted set:有序集合)

1)string(字符串)
	string是redis最基本的类型,一个key对应一个value。
	string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
	string类型是Redis最基本的数据类型,一个键最大能存储512MB。
	例如:
	127.0.0.1:6379> SET name "briup"
	OK

	127.0.0.1:6379> GET name
	"briup"
	
	//删除
	127.0.0.1:6379> del name
	(integer) 1

	注意:value中的双引号要不要都可以


2)hash(哈希)
	Redis hash 是一个键值对集合。
	Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
	例如:
	127.0.0.1:6379> HMSET user username briup password 123
	OK

	127.0.0.1:6379> HGETALL user
	1) "username"
	2) "briup"
	3) "password"
	4) "123"

	127.0.0.1:6379> hget user username
	"briup"
	
	//删除
	127.0.0.1:6379> del user
	(integer) 1

	例子中使用了 hash 数据类型存储了包含用户信息的用户对象。 
	每个 hash 可以存储2的31次方个键值对。

	注意:命令不区分大小写



3)list(列表)
	Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

	127.0.0.1:6379> lpush mylist briup
	(integer) 1

	127.0.0.1:6379> lpush mylist hello
	(integer) 2

	127.0.0.1:6379> lpush mylist world
	(integer) 3

	127.0.0.1:6379> lrange mylist 0 0
	1) "world"

	127.0.0.1:6379> lrange mylist 0 1
	1) "world"
	2) "hello"

	127.0.0.1:6379> lrange mylist 0 2
	1) "world"
	2) "hello"
	3) "briup"

	//删除
	127.0.0.1:6379> del mylist
	(integer) 1

	列表最多可存储2的31次方个元素。


4)set(集合)
	Redis的Set是string类型的无序集合。
	集合是通过哈希表实现的。

	sadd 命令
	添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经存在则返回0,key对应的set不存在返回错误。
	
	例如:
	127.0.0.1:6379> sadd myset hello
	(integer) 1
	127.0.0.1:6379> sadd myset world
	(integer) 1
	127.0.0.1:6379> sadd myset briup
	(integer) 1
	127.0.0.1:6379> sadd myset briup
	(integer) 0
	127.0.0.1:6379> smembers myset
	1) "hello"
	2) "world"
	3) "briup"

	//删除
	127.0.0.1:6379> del myset
	(integer) 1

	集合中最大的成员数为 2的31次方。



5)zset(有序集合)
	Redis中 zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
	不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

	zset的成员是唯一的,但分数(score)却可以重复。

	zadd 命令
	添加元素到集合,元素在集合中存在则更新对应score
	例如:

	127.0.0.1:6379> zadd myzset 2 briup
	(integer) 1

	127.0.0.1:6379> zadd myzset 0 hello
	(integer) 1

	127.0.0.1:6379> zadd myzset 1 world
	(integer) 1
	
	127.0.0.1:6379> zadd myzset 1 gogo
	(integer) 1
	
	127.0.0.1:6379> zrangebyscore myzset 0 3
	1) "hello"
	2) "gogo"
	3) "world"
	4) "briup"
	
	//删除
	127.0.0.1:6379> del myzset
	(integer) 1

8.Redis对key的操作命令

DEL 命令用于删除已存在的键。不存在的 key 会被忽略。
EXISTS 命令用于检查给定 key 是否存在。
EXPIRE 命令用于设置 key 的过期时间。key 过期后将不再可用。单位是秒
PEXPIRE 命令用于设置 key 的过期时间。key 过期后将不再可用。单位是毫秒
Expireat 命令用于以时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。
PEXPIREAT 命令用于设置 key 的过期时间,单位是毫秒。key 过期后将不再可用
PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。
Keys 命令用于查找所有符合给定模式 pattern 的 key,可以使用*通配符
MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。
	默认Redis中有16个数据库,下标分别为0-15,默认使用的是0(select 0)
	通过select可以切换数据库 例如: select 3
TTL 命令以秒为单位返回 key 的剩余过期时间。
Pttl 命令以毫秒为单位返回 key 的剩余过期时间。
RANDOMKEY 命令从当前数据库中随机返回一个 key 。
Rename 命令用于修改 key 的名称 。
	rename msg my_msg
Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。
	renamenx username name
	只要新的名字在redis中不存在的时候才会修改成功
Type 命令用于返回 key 所储存的值的类型。

9)Redis对字符串(String)的操作命令

SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。

Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

Getset 命令用于设置指定 key 的值,并返回 key 旧的值。

Mset 命令用于同时设置一个或多个 key-value 对。
Mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。
Psetex 命令以毫秒为单位设置 key 的生存时间。

Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
Msetnx 命令用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。

Setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。
Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

Incr 命令将 key 中储存的数字值增一。
	如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
	如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
	本操作的值限制在 64 位(bit)有符号数字表示之内。
Incrby 命令将 key 中储存的数字加上指定的增量值。
	如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
	如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
	本操作的值限制在 64 位(bit)有符号数字表示之内。
Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。
	如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。
Decr 命令将 key 中储存的数字值减一。
	如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
	如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
	本操作的值限制在 64 位(bit)有符号数字表示之内。
Decrby 命令将 key 所储存的值减去指定的减量值。
	如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。
	如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
	本操作的值限制在 64 位(bit)有符号数字表示之内。
Append 命令用于为指定的 key 追加值。	
	如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
	如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

11)Redis对哈希(Hash)的操作命令

Hset 命令用于为哈希表中的字段赋值 。
	如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
	如果字段已经存在于哈希表中,旧值将被覆盖。
Hsetnx 命令用于为哈希表中不存在的的字段赋值 。
	如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
	如果字段已经存在于哈希表中,操作无效。
	如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。
Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。
	此命令会覆盖哈希表中已存在的字段。
	如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作
Hget 命令用于返回哈希表中指定字段的值。
Hmget 命令用于返回哈希表中,一个或多个给定字段的值。
	如果指定的字段不存在于哈希表,那么返回一个 nil 值。
Hgetall 命令用于返回哈希表中,所有的字段和值。
Hexists 命令用于查看哈希表的指定字段是否存在。
Hlen 命令用于获取哈希表中字段的数量。
Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
Hkeys 命令用于获取哈希表中的所有字段名。
Hvals 命令返回哈希表所有字段的值。
Hincrby 命令用于为哈希表中的字段值加上指定增量值。
	增量也可以为负数,相当于对指定字段进行减法操作。
	如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
	如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
	对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
	本操作的值被限制在 64 位(bit)有符号数字表示之内。
Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。
	如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

12)Redis对列表(List)的操作命令

Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。

Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。
Lpop 命令用于移除并返回列表的第一个元素。
Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
	例如:LINSERT list before hello go
	在名字为list的列表中,往元素hello之前插入数据go

Lset 通过索引来设置元素的值。当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
	COUNT 的值可以是以下几种:
	count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
	count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
	count = 0 : 移除表中所有与 VALUE 相等的值。

Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。
Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效
Rpop 命令用于移除并返回列表的最后一个元素。
Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时(s)或发现可弹出元素为止。
Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

13)Redis对集合(Set)的操作命令

Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
	假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
	当集合 key 不是集合类型时,返回一个错误。
Scard 命令返回集合中元素的数量。
Smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
Sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。
Sdiffstore 命令将给定集合之间的差集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖。
Sinter 命令返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
Sinterstore 命令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。
Sismember 命令判断成员元素是否是集合的成员。
Smove 命令将指定成员 member 元素从 source 集合移动到 destination 集合
	SMOVE 是原子性操作。
	如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
	当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
	当 source 或 destination 不是集合类型时,返回一个错误。
Spop 命令用于移除并返回集合中的一个随机元素。
Srandmember 命令用于返回集合中的一个随机元素。
	从 Redis 2.6 版本开始, Srandmember 命令接受可选的 count 参数:
	如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
	如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
	该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动。
Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。
	当 key 不是集合类型,返回一个错误。
	在 Redis 2.4 版本以前, SREM 只接受单个成员值。
Sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。
Sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。
Sscan 命令用于迭代集合键中的元素。

14)Redis对有序集合(sorted set)的操作命令

Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
	如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
	分数值可以是整数值或双精度浮点数。
	如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
	当 key 存在但不是有序集类型时,返回一个错误。
Zcard 命令用于计算集合中元素的数量。
Zcount 命令用于计算有序集合中指定分数区间的成员数量。
Zincrby 命令对有序集合中指定成员的分数加上增量 increment
	可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
	当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
	当 key 不是有序集类型时,返回一个错误。
	分数值可以是整数值或双精度浮点数。
Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
	默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。
Zlexcount 命令在计算有序集合中指定字典区间内成员数量。
Zrange 返回有序集中,指定区间内的成员。
	其中成员的位置按分数值递增(从小到大)来排序。
	具有相同分数值的成员按字典序(lexicographical order )来排列。
	如果你需要成员按值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
	下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
	你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推
Zrangebylex 通过字典区间返回有序集合的成员。
Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。
	具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。
	默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。
Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。
Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。
	当 key 存在但不是有序集类型时,返回一个错误。
Zremrangebylex 命令用于移除有序集合中给定的字典区间的所有成员。
Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的所有成员
Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的所有成员。
Zrevrange 命令返回有序集中,指定区间内的成员。
	其中成员的位置按分数值递减(从大到小)来排列。
	具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
	除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。
Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。
	具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
	除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。
Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。
	排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。
	使用 ZRANK 命令可以获得成员按分数值递增(从小到大)排列的排名。
Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
	默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。
Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)

15)Redis中的事务

multi命令 和 exec命令
例如:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name tom
QUEUED
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> set dob 1999-11-11
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) OK

例如:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name tom
QUEUED
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> seta dob 1999-11-11
(error) ERR unknown command 'seta'
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> get dob
(nil)

例如:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name tom
QUEUED
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> hget name age
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) (error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> get age
"20"


Redis的事务中的错误分俩种:
语法错误
	这种情况需要区分Redis的版本,Redis 2.6.5之前的版本会忽略错误的命令,执行其他正确的命令,2.6.5之后的版本会忽略这个事务中的所有命令,都不执行

运行错误 
	运行错误表示命令在执行过程中出现错误,比如用hget命令获取string的值
	这种错误在命令执行之前Redis是无法发现的,所以在事务里这样的命令会被Redis接受并执行。如果事务里有一条命令执行错误,其他命令依旧会执行
ABAP Cloud 开发教程的文章目录 本教程涵盖 ABAP 云端 Client 处理、多租户架构、ABAP Cloud开发、动态编程优化、SQL语法改进等技术主题。最新版本1.0.0(更新至2025-12-12),包含197篇文章,重点文章包括《ABAP Client Handling与隔离机制》《ABAP Platform 2021泛型编程》《SAP BTP ABAP多租户应用开发》等,为开发者提供从基础到进阶的实战指南。 阅读详情

相关推荐

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化...

全文链接:https://tecdat.cn/?p=37821分析师:Yifan Zhang量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限(点击文末“阅读原文”获取完整代码数据)。量子计算作为一个全新的领域,带来了相较于传统经典计算模式的重大范式转变。在量子计算的体系中,传统的 0 或 1 的经典比特被一...

拓端研究室TRL 1455

Redis:字符串类型数据的操作命令

目录:(1)redis关于字符串类型数据的操作命令 1.set、2.get、3.append、4.strlen (2)redis关于字符串类型数据的操作命令2 1.incr、2.decr、... (1)redis关于字符串类型数据的操作命令 字符串类型(string)字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片。字符串类型的数据操作总的思想是通过key操作value,key是数据标识,value是我们感

dengfengling999的博客 1501

16QAM调制解调仿真(matlab,详细介绍仿真方案的设计、结果及结论、完整代码及注释)

16QAM调制解调仿真目录一、仿真要求二、仿真方案详细设计三、仿真结果及结论四、仿真代码 一、仿真要求 1.用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相比较; 2.高阶与低阶的性能比较。 二、仿真方案详细设计 三、仿真结果及结论 仿真结果 16QAM的星座点图 64QAM的星座点图 16QAM加噪声后的星座点图 64QAM加噪声后的星座点图 16-QAM载波调制信号在AWGN信道下的误比特率性能比较 结论:由图可知,16QAM的误符号率

mango 5万+

Redis与java结合使用

Redis 开源免费的高性能key-value数据库 内置数据库特点: 1、redis支持数据持久话,可以将内存中数据保存在磁盘中,重启的时候可以再次加载进行使用。 2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 3、Redis支持数据的备份。 2、Redis的优势 性能极高 Redis能读的速度是110000次/s,写

Amos_hongli的博客 2942

mtk-drm commit送显流程(二):内核态atomic_commit实现解析

本文深入解析了mtk-drm框架中atomic_commit机制的内核态实现流程,详细介绍了从用户态触发到硬件提交的完整调用链,包括状态检查、硬件提交等关键阶段。特别分析了MTK平台在动态刷新率、内存带宽优化等方面的特有实现策略,为开发者提供了调试技巧和常见问题解决方案。

weixin_30839881的博客 1305

从QEvent到系统响应:EC如何成为硬件事件的隐形信使

本文深入解析嵌入式控制器(EC)如何作为硬件事件的隐形信使,通过QEvent机制将按键、合盖等物理事件转换为SCI信号,并经由ACPI架构触发操作系统响应。EC与BIOS紧密协作,实现了从底层硬件到系统层面的高效事件传递,是嵌入式开发和系统优化的关键技术。

yellow的专栏 651

Redis -- String 字符串, 计数命令,字符串操作

Redis 的String字符串,已经一些常用命令:set ,get , mget , mset , setnx , setex, psetex。计数命令incr,decr,incrby,decrby,incrbyfloat。字符串操作:append, getstrang,setstrange,strlen.

随便写点C++和JAVA的知识 1271

深入解析摄像头硬件接口:DVP、MIPI-CSI2与USB的技术对比与应用场景

本文深入解析了摄像头三大主流硬件接口DVP、MIPI-CSI2与USB的核心技术差异。DVP接口作为并行传输的“老兵”,成本低但带宽和抗干扰能力有限;MIPI-CSI2凭借差分串行设计成为移动高清设备的首选,具备高带宽和强抗干扰性;USB接口则依托UVC标准实现了跨平台的即插即用。文章通过对比传输方式、带宽、应用场景等关键维度,为智能硬件、嵌入式系统等领域的工程师提供了清晰的选择指南。

c7d8e的博客 513

Redis学习之strlen命令

目录strlen命令语法返回值例子 strlen命令 Redis strlen, 命令用于获取指定 key 所储存的字符串值字节长度。 当 key 储存的不是字符串值时,返回一个错误。 语法 strlen key 返回值 字符串值的长度,当 key 不存在时,返回 0 例子 获取字符串字节长度 127.0.0.1:6379> set test:strlen '中国' OK 127.0.0...

爱喝水的qdy的博客 868

SMPLify-x-master | 复现记录

由于毕业设计中将会用到smpl模型,而smplify方法的各环境依赖版本比较老,复现不太容易,因此便进行了smplifyx方法使用smplx的方法。由于在过程中遇到较多坑,因此进行记录和分享。

qq_44916003的博客 5100

Python 爬虫实战:爬虫代码打包为可执行文件

本文详细介绍了使用PyInstaller工具将Python爬虫打包为可执行文件的全过程。以豆瓣电影Top250爬虫为例,首先对比了主流打包工具,推荐选择跨平台的PyInstaller。通过编写完整的爬虫代码(包含异常处理和数据保存功能),演示了从环境准备、代码测试到打包配置的具体步骤。重点讲解了单文件打包、自定义图标等高级功能,并针对常见的"找不到模块"、文件体积过大等问题提供了解决方案。文章还说明了跨平台打包的注意事项,帮助开发者实现爬虫程序的无环境依赖部署,大幅提升程序的易用性和部署

2503_91057718的博客 2215

redis-string类型命令操作笔记

redis-string类型 命令 1.赋值与取值 SET key value # 赋值 GET key # 取值 2.递增数字 INCR num 3.增加指定的整数 `INCRBY`命令与`INCR`命令基本一样,只不过前者可以通过`increment`参数指定一次增加的数值,如: redis&gt; INCRBY bar 2 (integer) 2 red...

大西瓜Blog 510

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Redis 常用命令总结

以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!

weixin_73869209的博客 2262

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis:常用命令总结

ziplist(压缩列表):当有序集合的元素个数小于 zset-max-ziplist-entries 配置(默认 128 个),同时每个元素的值都小于 zset-max-ziplist-value 配置(默认 64 字节)时,Redis 会用 ziplist 来作 为有序集合的内部实现,ziplist 可以有效减少内存的使用。type 命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列 表)、hash(哈希)、set(集合)、zset(有序集合),

m0_61088872的博客 8440

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis(一):redis简介及操作的基本命令

1.Redis简介 1.1NoSQL NoSQL = Not Only SQL(不仅仅是 SQL) ,也解释为 non-relational(非关系型数据库)。在NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。 1.2Redis Remote Dictionary Server(Redis)是一个开源的使用 C 语言编写、支持网络、可基于内存 亦可持久化的 Key-Value 数据库. Key 字符类型, 其值(value)可以是字符串(String), 哈希(Map),列表(

qq_2580123的博客 106

【Redis篇】Hash的认识以及相关命令操作

【Redis篇】Hash的认识以及相关命令操作

chaodddddd的博客 7511

redis基本命令与操作演示

redis概念基本命令String类型hash类型list类型set类型springboot操作演示配置pom.xmlapplication.propertiesspringboot案例演示前端页面部分控制器层![在这里插入图片描述](https://img-blog.csdnimg.cn/20210109192140331.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLm

不知名博客 355

Redis基本用法

一.NoSql 1.什么是NoSql NoSQL不仅仅是No SQL,还是Not only SQL,SQL代表传统关系数据库,NoSQL显然是针对传统关系数据库的补充和升级。 NoSQL分类: (1)Key-value stores键值存储, 保存keys+BLOBs (二进制大对象Binary Large OBjects) (2)Table-oriented 面向表列, 主要有Google的BigTable和Cassandra. (3)Document-oriented面向文档, ...

syn2018的博客 5201

Redis通用命令 & key的过期删除策略

Redis全局命令(set/get/keys/exists/del/expire/pexpire/ttl/type) Redis中key的删除策略

he20021221的博客 1690

Redis(十二):Redis事务的基本操作

1、Redis事务概念 Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 Redis不保证原子性:Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。 Redis事务没有隔离级别的概念:批量操作在发送 EXEC

栗筝i的博客 3335

Redis基本原理和基础知识

Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的、基于内存运行的 NoSQL 数据库[Unit][Service]User=redis[Install]

byq002488的博客 1411

Redis入门(命令、API、结合Spring boot)

redis看这一篇就够了,redis命令,redis+Springboot开发,redis各种API实现,redis从0到入门只需要1分钟。

black_pp的博客 921

Redis的基本命令

向redis服务器发送命令 ping:redis提供了ping命令来测试客户端与redis的连接是否正常,如果连接正常会收到回复pong echo:在命令行打印一些内容 quit:退出连接 dbsize:返回当前数据库中key的数目 info:获取服务器的信息和统计 flushdb:删除当前选择数据库中的所有key flushall:删除所有数据库中的所有key ...

weixin_34375054的博客 109

Redis(一)(Nosql,Linux下安装并测试,基本命令)

1、Nosql (1)数据库的技术演进 单机MySQL的年代,90年代,那个回收网站的访问量不会太大,单个数据库完全足够。 Memcached(缓存)+MySQL+垂直拆分(读写分离) 分库分表+水平拆分+MySQL集群 如今,随着科技的发展,传统的MySQL等关系型数据库就不够用了,比如一些大的文件、图片、博客,如果能有一种数据库来专门处理这种数据就很好。 (2)什么是Nosql? Nosql=Not Only SQL(不仅仅是SQL) 关系型数据:表格,行,列。而Nosql就是非关系型数据库,不需要

weixin_44324174的博客 206

redis 总结

1.基本命令 http://redisdoc.com/ 在线文档 multi事务开启,总会返回ok,但是并不表示一定会开启事务。除非及特殊情况是开启不了的,服务器关了等 exec(执行事务内的所有命令)执行事务, discard(取消事务内的所有命令)取消事务, unwatch取消wathc监视的所有key, watch(监控):监视一个或者多个key,如果在事务执行之前这个或者这些key被其他命...

qq_39508627的博客 175

一文熟悉redis安装和字符串基本操作

NoSQL: Not Only SQL 不仅仅是SQLNoSQL:是一种概念,是数据库应用的设计理念,解决关系型数据库的瓶颈。NoSQL特点:容易扩展、高速读写/IO、高性能、高并发、海量数据存储。NoSQL产品:redis, mongo, hbase等redis是一个内存型的nosql数据库,是采用c++语言开发的,实现了高可用、高IO的内存数据库。

nhb687096的博客 141
上一篇: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
下一篇: Redis详解
平平无奇的编码小天才
博客等级 码龄6年 15粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值