Redis(一) Redis安装运行和数据操作

一. Redis 简介

redis 是一款开源的kv型数据库。可以作为缓存也可以持久化使用。
数据类型】
Binary-safe strings: 字节码string。
Lists: 依照插入的顺序的字符串数组,类似于链表。
Sets: 唯一无序的string元素数组。
Sorted sets: 相比较于Sets,每个string元素将关联一个float类型的score。这里所有的元素将通过score排序。
Hashes: 通过Field索引Value,field和value都是string。
Bit arrays (or simply bitmaps): 把string存储成byte数组。
下载安装】
下载地址: https://redis.io/download
对于windows平台,官方不提供相应的安装包。这里我们使用docker来安装redis。
首先下载安装docker
打开cmd输入docker run --name some-redis -d redis 来获取redis镜像并且运行
可以使用docker images查看当前镜像
在这里插入图片描述
创建文件夹D:/data
使用docker run -p 6379:6379 -v D:/data:/data -d redis:3.2 redis-server --appendonly yes
来运行redis。
在这里插入图片描述
查看运行实例docker ps
在这里插入图片描述
通过自带的redis-cli 连接该redis docker exec -it 292e90d7a51f redis-cli
在这里插入图片描述
然后就可以正常操作redis了,我们先输入info来查看redis
在这里插入图片描述
基本测试
在这里插入图片描述

二. Redis 语法和操作

set key value 设置一个键值对 key:value
get key 获取key对应的value的值
在这里插入图片描述
当然你可以把所有的数据都转换成string 存下来,包括图像。当前value不能大于512m。
如果你存入的相同的key,那么之后的key的值会覆盖之前的值。可以使用额外参数来控制是否覆盖。
set key value nx 设置key值为value 只有当key不存在时。
set key value xx 设置key值为value 只有当key存在时。
虽然string是redis的基本数据类型,但是还是可以使用自增操作
incr key key的值有锁自增
在这里插入图片描述
incr是把value的值转换成int,然后自增1。但是为了防止并发自增导致脏数据的情况,所以加了锁控制。如果value 不是可以转换成int的值,那么会报错。
在这里插入图片描述
如果你想同时设置或者获取多个值,来获取更高的效率。可以使用
mset key1 value1 key2 value2 key3 value3
mget key1 key2 key3
在这里插入图片描述
exists key判断key value是否存在。如果存在,返回1。不存在,返回0。
del key删除key value。如果成功,返回1。失败,返回0。
在这里插入图片描述
type key 判断key的类型。返回key的类型。无返回none
在这里插入图片描述
Redis expires 设置key的存活时间。指的是给key设置一个存活时间。当到达存活时间的时候,系统自动销毁该key,类似于del key。
一些超时的信息:
1.你可以设置秒和毫秒的超时时间
2.无论设置成秒还是毫秒,判断精度为毫秒。
3.当数据被持久化到硬盘中时,超时也将被持久化。
在这里插入图片描述
set key value ex seconds 来快速设置超时
ttl key 查看剩余存活时间
在这里插入图片描述
上面的图片设置了超时10秒,然后可以查看剩余时间。
Redis List
Redis List 就时以数组的形式存储数据。于传统数组不同的是,这个数组类似于链表。可以前后压入数据。
lpush key value 给数组添加元素,并把元素放在数组的左边。返回数组长度。
rpush key value给数组添加元素,并把元素放在数组的右边。返回数组长度。
lrange key start end 返回从start到end的元素,为正数 则表示从左往右,为负数表示由右向左
在这里插入图片描述
当前lpush 和 rpush 都是可以同时操作多个数据。如
在这里插入图片描述
rpop key 弹出数组右边的第一个元素。如果数组为空,则返回nil Value。
lpop key 弹出数组左边的第一个元素。如果数组为空,则返回nil Value。
在这里插入图片描述
Redis List的应用场景
消息系统,生产者把消息压入到List中,消费者弹出最老的消息进行消费。
有序的日志系统,有序的照片存储。
在很多案例中我们把List用于存储最新的数据。不管是社交更新,日志或是其他相关的东西。
ltrim start end 只保留左起start 到 end的元素,其他元素抛弃。常用于抛弃过时元素。
在这里插入图片描述
在实际的应用中,不同的客户端操作同一个List时会出现并发性的问题。导致读取的数据为空。那么Redis提供了命令。
brpop key timeout BLPop key timeout key 就时List的keyi值,timeout是阻塞超时时间
意思就是弹出元素,当数组为空时,等待。如果数组有元素,则返回。若超时,返回nil。
当有多个client 等待时。若此时有元素进入,先等待的可以先获取该元素。等待是有序的。
在这里插入图片描述
Redis Hashes
以键值对的形式存储数据,例如
在这里插入图片描述
hmset key field value field value… 设置一个Redis Hash,理论上键值对是无限的,但是局限于内存大小限制。
hget key field 获取Redis Hash key对应的field的值。
hmget key field1 field2… 获取Redis Hash key 对应多个field的值。
hgetall key 获取Redis Hash key的所有值。
在这里插入图片描述
Redis Sets
这里是无序的string集合。作用是保证Set里面的值都是唯一的,可以用来做唯一性验证,比如说ID,账号名之类的。
sadd key value1 value2 value3… 设置多个值,返回的是设置成功的值。如果所有值都存在,则返回0。
smembers key 用来获取该Key对应Set的所有值。
在这里插入图片描述
sismember key value判断Key对应的Set 中value值是否存在。存在返回1,否则返回0。
在这里插入图片描述
sinter setKey1 setKey2… 是找到多个Set之间的相同元素,并返回它们。
spop setKey 随机弹出Set里面的一个值。随机取值,在游戏和应用当中意义比较大。
在这里插入图片描述
sunionstore destKey srcKey将destKey 对应的 Set 复制到deskKey对应的Set。
在这里插入图片描述
scard setKey 返回当前key对应set的元素数量。
srandmember setKey 随机返回set中的一个值,不删除原值。
在这里插入图片描述
Redis Sorted sets
有序的Set。所有的值在插入的同时,同时要附加一个float值。叫做score。
如果A的score大于B的score 则 A>B反之则A<B
如果A和B的score相等,则根据字典排序。Set特性不存在相同的string。
在这里插入图片描述
zadd key score value 添加元素
zrange key start end 正序返回从start到end的元素。
zrevrange key start end 倒序返回从stard到end的元素。
在这里插入图片描述
zrangebyscore key -inf score返回所有小于等于score的数据。
zremrangebyscore key scoreMin scoreMax删除score大于等于scoreMin,小于等于scoreMax的数据。返回成功的行数。
在这里插入图片描述
zrank key value 获取value对应的排名
在这里插入图片描述
字典排序
对于Set,当传入的score都相同时。将会进入字典排序。
在这里插入图片描述
这里按照字母顺序排序
zrangebylex setKey [start [end 获取首字母在start和end之间的数据
在这里插入图片描述

结尾

猜你喜欢

转载自blog.csdn.net/qq_35554975/article/details/86618061