2021-6-18 < Redis基础 >

一、什么是redis

同mysql一样是一个key-value数据库,多用于celery分布式的存贮任务和结果,有以下有点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis支持数据的备份,即master-slave模式的数据备份。(数据库的读写分离)
  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

二、连接redis数据库

进入redis目录文件下,在导航栏输入'cmd'进入命令行模式

redis-server.exe redis.windows.conf

启动本地redis服务

再开启一个命令行,本地连接

redis-cli --raw    #本地连接

redis-cli -h host -p port -a password #远程连接

三、redis基本指令

(只列出本人常用命令,其他命令请查询官方文档)

1、键操作

Redis 键命令用于管理 redis 的键。

127.0.0.1:6379> set keyyy redis  #新建key
OK
127.0.0.1:6379> keys *  #查询所有key
keyyy
127.0.0.1:6379> keys keyyy  #查询指定key
keyyy
127.0.0.1:6379> del keyyy  #删除指定key
1
127.0.0.1:6379> keys *

1)Redis不支持自定义数据库名
2)Redis不支持为每个数据库设置密码
3)Redis的多个数据库之间不是完全隔离的,FLUSHALL命令会清空所有数据库的数据
    a)FLUSHALL – 清空所有数据库的所有数据
    b)FLUSHDB – 清空当前所在数据库的数据

redis默认同时存在16个数据库(0-15),可在配置文件中的databases中修改。当我们连接Redis服务时,默认操作的是0号数据库,可以通过SELECT命令更换数据库:

127.0.0.1:6379> select 1
OK

2、字符串操作

对数据类型为字符串的数据进行操作

127.0.0.1:6379> set keyyy hahaha  #为指定key赋值,如果没有key则自动创建
OK
127.0.0.1:6379> get keyyy  #获取目标key的值
hahaha
127.0.0.1:6379> getset keyyy hahaha2 #将给定key的值设为value,并返回 key的旧值
hahaha
127.0.0.1:6379> STRLEN keyyy #返回key所储存的字符串值的长度。
7
127.0.0.1:6379> msetnx key4 key444 key5 key555 #同时设置多个key-value对,key不能存在
1
127.0.0.1:6379> get key4
key444
127.0.0.1:6379> get key5
key555

3、hash操作

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

设置一些描述信息(name,age,gender)到哈希表的person键中

127.0.0.1:6379> hmset person name "laowang" age 20 gender "man" # hmset key名 字段名 "值"
OK
127.0.0.1:6379> hgetall person #显示目标字段的所有值
name
laowang
age
20
gender
man

127.0.0.1:6379> hdel person name gender #删除 name 和 gender 字段
2
127.0.0.1:6379> hgetall person
age
20
127.0.0.1:6379> hset person age 21 #将哈希表key中的字段field的值设为value 。
0 
127.0.0.1:6379> hgetall person
age
21

4、list操作

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

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

127.0.0.1:6379> LPUSH list1 haha #从左边给list1插入数据(可多个插入)
1
127.0.0.1:6379> RPUSH list1 hehehe #从右边给list1插入数据(可多个插入)
2
127.0.0.1:6379> RPUSH list1 HOHOHO
3
127.0.0.1:6379> LRANGE list1 0 100  #获取列表指定范围内的元素
haha
hehehe
HOHOHO
127.0.0.1:6379> LINDEX list1 2 #获取目标索引位置的值
HOHOHO
127.0.0.1:6379> LINSERT list1 BEFORE HOHOHO NONONO #在目标元素前插入
4
127.0.0.1:6379> LINSERT list1 AFTER HOHOHO yeyeye #在目标元素后插入
5
127.0.0.1:6379> LRANGE list1 0 100
haha
hehehe
NONONO
HOHOHO
yeyeye
127.0.0.1:6379> LLEN list1  #获取列表长度
6
127.0.0.1:6379> LPOP list1  #移出并获取列表的第一个元素
haha
127.0.0.1:6379> RPOP list1  #移出并获取列表的最后一个元素
yeyeye
127.0.0.1:6379> LREM list1 1 hehehe 
#根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素--->删除值为hehehe的元素,删一个。
#count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
#count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
#count = 0 : 移除表中所有与 VALUE 相等的值。
1
127.0.0.1:6379> LRANGE list1 0 100
NONONO
yeyeye
HOHOHO
yeyeye
127.0.0.1:6379> LSET list1 1 POPOPO #通过索引设置列表元素的值
OK
127.0.0.1:6379>  LRANGE list1 0 100
NONONO
POPOPO
HOHOHO

5、无序集合

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

127.0.0.1:6379> SADD setkey HAHAHA # 向setkey集合插入的一个元素。
1
127.0.0.1:6379> SADD setkey HOHOHO NONONO\ # 向setkey集合插入的两个元素。
2
127.0.0.1:6379> SADD setkey HAHAHA  #向setkey集合插入的一个重复的元素。插入失败
0
127.0.0.1:6379> SCARD setkey #获取集合的成员数
3
127.0.0.1:6379> SMEMBERS setkey #返回集合中的所有成员
HOHOHO
HAHAHA
NONONO\
127.0.0.1:6379> SPOP setkey #移除并返回集合中的一个随机元素,因为集合是无序的
NONONO\
127.0.0.1:6379> SISMEMBER setkey YEYEYE #判断元素是否是集合的成员
0
127.0.0.1:6379> SISMEMBER setkey HAHAHA
1
127.0.0.1:6379> SRANDMEMBER setkey 1 #返回集合中一个随机数
HOHOHO
127.0.0.1:6379> SRANDMEMBER setkey 2 #返回集合中两个随机数
HAHAHA
HOHOHO

127.0.0.1:6379> SDIFF setkey setkey2 #返回第一个集合与其他集合之间的差异。
HOHOHO
127.0.0.1:6379> SINTER setkey setkey2 #返回给定所有集合的交集
HAHAHA
127.0.0.1:6379> SUNION setkey setkey2 #返回所有给定集合的并集
PAPAPA
HAHAHA
HOHOHO

6、Redis 有序集合(sorted set)

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

127.0.0.1:6379> ZADD ss1 1 laowang #插入数据并关联上分数
1
127.0.0.1:6379> ZADD ss1 1.1 laoliu
1
127.0.0.1:6379> ZADD ss1 2.0 laogao
1
127.0.0.1:6379> ZADD ss1 2.0  laogao
0
127.0.0.1:6379> ZRANGE ss1 0 10 WITHSCORES #通过索引区间返回有序集合指定区间内的成员和分数(可不带分数)
laowang
1
laoliu
1.1000000000000001
laogao
2

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值