Redis基本使用总结

Redis基本使用总结

简介

Redis是一个用C语言编写的基于内存的以键值对存储数据的NoSql数据库,可基于内存这一点就决定了这个数据库的读写效率非常高,因此Redis也被广泛运用在缓存、分布式锁等场景。

Redis安装

如果你是Arch系统的话,可以直接通过以下的命令安装还启动Redis

sudo pacman -S redis
sudo systemctl start redis.service
redis-cli

当然你也可以通过Docker来进行安装

sudo docker pull redis
sudo docker run --name test-redis -p 6379:6379 -d redis
sudo docker exec -it test-redis redis-cli  

Redis默认的端口是6379

redis-cli是Redis的控制台

连接Redis

连接本地Redis

安装好Redis之后,使用以下命令链接Redis

redis-cli #Arch
sudo docker exec -it test-redis redis-cli #Docker  

redis_guide_1

连接远程Redis

redis-cli -h host -p port -a password

其中host指对应的IP,Port指对应的端口号,如果有设置密码还需提供相应的password

Redis的五种基本数据类型

Redis的五种基本类型分别是:

  • String:字符串,即最简单的键值对
  • Hash:哈希,和Java中HashMap的数据类型类似
  • List:列表
  • Set:集合
  • ZSet:有序集合

五种类型的基本操作

String

插入、获取、删除一个简单的键值对

redis-cli             #打开控制带
set msg hello_world   #插入一个键为msg,值为hello_world的记录
get msg				  #获取键为msg的值
del msg			      #删除键为msg的值
get msg				  #删除后则获取到空值

redis_guide_2

获取多个值

mget key1 key2 key3

redis_guide_3

设置多个值

mset key1 value1 key2 value2

redis_guide_04

其他常用命令

获取对应值的长度

strlen key 

将数字类型的值加上或者减去给出的值

incrby key num# 如果key对应的值为数字,加上num
decrby key num# 如果key对应的值为数字,减去

追加字符

append key string # 在对应key的值的末尾追加一个String 

Hash

插入、删除、获取一个Hash及其字段

hset user name admin age 24 email email 123@foxmail.com
# 可以这么理解:设置了一个名为user的HashMap,插入了name age email 三个键值对
# 即 hset key field1 value1 field value2 
hget user name # 根据Hash的名称和字段获取value
hget user age  # 同上
hdel user name # 根据Hash的名称和字段删除value
hgetall user   # 获取user的所有键值对
del user       # 删除user	

redis_guide_5

获取Hash所有字段的键/值

hkeys user  # 获取所有键
hvals user  # 获取所有值	

redis_guide_6

获取、设置多个字段

hmget user name age    # 获取user中的name age字段
hmset user name Normal # 将user中name字段的值改为Normal	

redis_guide_7

List

新建一个列表并添加、删除

lpush list name age email # 新建一个名为list的列表并且在头部依次添加name age email
lrange list 0 2 #遍历list从[0,2]的值
lpop list # 删除list头部的值
rpush list gender# 在list的尾部添加一个值gender
rpop # 删除list尾部的值

redis_guide_8

根据下标获取、设置列表的值

lindex list 1      	# 获取下标1的值
lset list 1 address	# 设置下标1的值为address

redis_guide_9

截取列表

ltrim list 1 3 # 截取[1,3]范围内的列表

redis_guide_10

Set

新建集合,添加元素(集合中的元素唯一且获取随机)

sadd set p1  # 新建集合set添加p1
sadd set p2	 # 添加p2
sadd set p3  # 添加p3
smembers set # 查看所有元素

redis_guide_11

删除制定元素

srem set p1 p2  # 删除一个或者多个指定的元素

redis_guide_12

求不同集合的交并差

sinter set1 set2 # 交集
sunion set1 set2 # 并集
sdiff set1 set2  # set1 与 set2 之间的差异

redis_guide_13

ZSet

新建有序集合并添加元素

zadd zset 1 p1 2 p2 3 p3 , 4 p4 5 p4 6 p4
# 可见和Set相比,每一个值多了一个数字Score,这个Score就是ZSet排序的依据
zrange zset 0 3 # 遍历

redis_guide_14

删除元素

zrem zset p1 p2	

redis_guide_15

返回指定Score区间的值

zrangebyscore zset 0 3	

redis_guide_16

Redis事务

Redis也是支持事务的,可以一次执行多个命令

Redis事务主要依靠一下几个命令:

  • multi : 开启事务
  • discard :取消事务
  • exec :执行事务
  • watch:监视一个key,如果执行过程中key发生改动则事务被打断
  • unwatch :取消watch

注意:Redis的事务是不支持回滚的,当发生错误时执行过的指令不会撤销

事务实例:

实例1:

mutlt
set name panrh.com	
set email 123@qq.com
exec
get name
get email	

redis_guide_17

实例2:

终端1:

redis_guide_18

终端2:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OGWpHZp-1612174488695)(https://panrh.com/upload/2021/02/redis_guide_19-10960d9607114eec9ab5d9837413b7d0.png)]

终端1:redis_guide_20

因为在执行事务的过程前对name进行了watch,而执行事务的过程中,通过终端2修改了name,此时返回终端1中进行事务的执行,发现无法获取name

其他

Redis更详细的使用建议去参考Redis的官方文档

Redis文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值