先导:安装各种软件
1.windows-redis
有一个图案界面就代表成功了。
2.Redis Desktop Manager(可视化界面)
新连接设置》
输入你的名字,地址和端口号
然后进行测试
出现链接Redis服务器成功就代表ok。
3.配置redis数据库连接-测试
面试题1:关系型数据库和非关系型数据库最明显的区别:
关系型数据库具有固定的表结构。
非关系型数据库不具有固定的表结构,
一般只具有key-value键值对的存储结构。
面试题2: redis存储的数据类型有几种?
key只有一种是string类型,
而value有5种类型:
1.string类型2.list类型 3.set类型 4.hash类型 5.zset类型
1. 定义
Redis 是一个高性能的key-value数据库,key是字符串类型。
2.核心特点:
单进程:
Redis的服务器程序采用的是单进程模型来处理客户端的请求。
对读写时间的响应是通过对epoll函数的包装来做到的。
3.数据类型:
键的类型是字符串
值的类型分为五种:
字符串string,哈希hash,列表list,无序集合set;有序集合zset
3.1 string类型(最常用和重要)
3.1.1 简介
字符串(string)是Redis最基本的类型,
可以存储String,Integer,Float型的数据,
甚至是二进制数据,一个字符串最大容量是512M
3.1.2 set命令
set 键值
》如果键不存在,就是添加
》如果键存在,就是修改
设值取值
set key value
set name marong
set name asdf
如何在可视化界面写代码?
-1永久存在 TTL
设置过期时间
setex pwd 30 123456
TTL : 30 30秒 加载完毕之后就消失了,刷新之后就能看出
清除所有键值对的方法:
设置多个键值对
mset key1 value1 key2 value2 key3 value3
3.1.3 追加值
append key value
》成功是下面有长度
添加是在key键对应的value值后面添加
3.1.4 get命令
获取单个值 》get key1
获取多个值 》mget key1 key2
3.1.5 del命令
》 0就是没删除 名字不存在
》 数字接收对应删除的个数
删除某个键 》del key1
删除多个键 》del key1 key2
3.1.6 keys命令(查找键)
mset a 1 b 2 c 3
keys *
3.1.7 exists命令(判断键是否存在)
如果存在返回1,不存在返回0
exists key
3.1.8 type命令(查看键对应值的类型)
type key
举例:
type a
“string”
3.1.9 expire命令(设置键过期时间)
expire key seconds
这个是根据已经有键值对的时间进行修改
和上一个不一样。
案例:
set name zz
expire name 10
3.1.10 TTL 命令(查看键有效时间)
TTL key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
举例:
setex aaa 30 40
ttl aaa
3.2 list类型
3.2.1 简介
(1)列表中的值(value)类型为字符串;
(2)字符串List,底层实现上不是数组,而是链表,
也就是说在头部和尾部插入一个新元素,其时间复杂度是常数级别的;
其弊端是:元素定位比数组慢
3.2.2 添加
从左侧插入值:
lpush key value1 value2
从右侧插入值:
rpush key value1 value2
思考题:
lpush aa a b c
rpush bb a b c
画图观察:
3.2.3 获取
返回列表里指定范围内的值
(1) 索引从左侧开始,第一个值的索引为0;
(2) 索引可以是负数,表示从尾部开始计数,如-1表示最后一个值;
(3) start,stop为要获取值的索引。
语法:lrange key start stop
例如:
(1)获取列表所有值
lrange key 0 -1
举例:
asdf:0>lrange aa 0 -1
c
b
a
(2)从第三个元素开始获取到最后的值
lrange key 2 -1
3.2.4 修改
设置指定索引位置的值
(1)索引从左侧开始,第一个值的索引为0;
(2)索引可以是负数,表示从尾部开始,-1代表最后一个值。
语法:lset key index value
举例:
lset aa 2 f
=>第3位原本是a
a 》f 现在变成f了
3.2.5 删除
删除指定值
(1) 将列表中前count次出现的值移除
(2) count>0:从头往尾删除
(3) count<0:从尾往头删除
(4) count=0:删除所有值
语法:lrem key count value
(1)举例:
rpush born2 0 1 2 3 4 5 0 1 2 1 0 1 0 2 3 4 1 0 1 1 2
(2)查询列表
lrange born2 0 -1
(3)案例2:从键列表右侧开始删除1个2
lrem born2 -1 2 -1从右侧开始删 删1个2
(4)查询列表
lrange born2 0 -1
(5):从键列表左侧开始删除2个2
lrem born2 2 2
(6)查询列表
lrange born2 0 -1
3.3 set类型
3.3.1 简介
字符串Set,无序不可重复,是通过HashTable实现的。
3.3.2 举例
1.sadd:添加元素
格式是SADD KEY_NAME VALUE1…VALUEN
127.0.0.1:0>sadd myset v1
127.0.0.1:0>sadd myset v1 #不得重复
》0就是没添加成功
127.0.0.1:0>sadd myset v2 v3 v4 v1 #可以设置多个值
》 3 添加成功 v1就不行
2.smembers:获取集合中所有元素
格式是SMEMBERS key
127.0.0.1:0>smembers myset #查询myset中的值有哪些
3.sismember:判断元素是否在集合中
格式是SISMEMBER KEY VALUE
127.0.0.1:0>sismember myset v1
成功 返回值为 1
4.srem:删除元素
格式是SREM KEY MEMBER1…MEMBERN
127.0.0.1:0>srem myset v1
5.scard:获取集合中元素个数
格式是SCARD KEY_NAME
127.0.0.1:0>scard myset
6.spop:弹出元素格式是SPOP key [count]
随机选出然后删除
127.0.0.1:0>spop myset
7.smove:移动元素
格式是SMOVE SOURCE DESTINATION MEMBER
smove kj10 kj11 v9
kj10 就没了 到了kj11 先创建如果没有的话。
3.4 Hash哈希类型
3.4.1 简介
按Hash方式来存放字符串
key 对应的value里还有个小key对应的小value
3.4.2 实战
1.设置值
格式是HSET KEY_NAME FIELD VALUE
hset user id 999
2. hmset:同时设置多对值
格式是HMSET KEY_NAME FIELD1 VALUE1 …FIELDN VALUEN
hset user name z pwd 123458
3.hgetall:获取该key下所有的值
格式是HGETALL KEY_NAME
hgetall user
4.hget:获取单个key的值
格式是HGET KEY_NAME FIELD_NAME
hget user name
5.hmget:同时获取多个值
格式是HMGET KEY_NAME FIELD1…FIELDN
hmget user name pwd
6.hdel:删除某个项
格式是HDEL KEY_NAME FIELD1… FIELDN
hdel user name
3.4 zset类型(有序集合)
3.4.1 简介
字符串Set,有序且不可重复,根据Score来排序。
3.4.2 实战
1.zadd:添加元素
格式是ZADD KEY_NAME SCORE1 VALUE1… SCOREN VALUEN,
score和项可以是多对,score可以是整数,也可以是浮点数,
还可以是+inf表示正无穷大,-inf表示负无穷大
zadd kj 10 v1 v1是key 10是值
zadd kj 12 v2 40 v3 60 v4 20 v5
结果是从小到大排序
2.zrange:获取索引区间内的元素
格式是ZRANGE key start stop [WITHSCORES]
zrange kj 0 -1
zrange kj 0 -1 withscores (withscores带后面的参数)
3.zrangebyscore:获取分数区间内的元素
格式是ZRANGEBYSCORE key min max [WITHSCORES]
zrangebyscore kj 0 20 #代表大于等于0,小于等于20
zrangebyscore kj 0 (20 #代表大于等于0,小于20
zrangebyscore kj 0 (20 withscores #代表大于等于0,小于20,带分数
zrangebyscore kj 20 +inf withscores #代表大于等于20,带分数
zrangebyscore kj (20 +inf withscores #代表大于20,带分数
4.zrem:删除元素
格式是ZREM key member [member …]
zrem kj v1 v2 #删除v1,v2
zrangebyscore kj 0 +inf withscores #获取所有的大于0的值和分数
5.zcard:获取集合中元素个数
格式是 ZCARD KEY_NAME
zcard kj
注意点:
存汉字用序列化 不用写汉字 以后用json
登录校验是放在redis中。
----2021.11.24&11.25