Redius
redius是基于内存的noSql数据库。
优势:
读写分离操作搭建集群单线程支持高并发
目前缓存的主流救赎
Redis
Memcached
mongoDB
区别?
很早出现的nosql数据库,数据都是存在内存中,不能持久化,支持的类型单一。
Redis安装(Linux)
1.首先下载压缩包2.上传到服务器3.进行解压4.解压完成之后,如果没有ggc安装gcc5.make6.make install7.进入到redis目录,修改redis.conf的daemonize改为yes。cd /usr/local/bin8. redis-server /home/yanqi/user/redis/redis-6.2.6/redis.conf 9. redis-cli10. 通过ping命令测试客户端是否连接成功
redis的数据类型
redis是以为key-value类型存储数据的所以接下来是key的类型
string 字符串 hash 哈希散列 list 列表 set 集合 (一个键对应一个无需集合) zset 有序集合(一个键对应一个有序集合)
Redis操作
多数据库
redis默认数据库有15个,编号是0-15,默认连接的设计0号仓库
切换仓库
sql SELECT 数据库索引
获取当前数据库key的总数
sql dbsize
查询键名
sql keys 正则表达式(查询所有可用*)
删除键值对
sql del 键名
存储键值对
sql set key value -- 如果有相同的key则会进行覆盖 setnx key value -- 如果有相同的key则进行覆盖,没有则进行添加
存储多组键值对
sql mset key value [key value] -- 如果有相同的key则进行覆盖 msetnx key value -- 当多个key都不存在时进行添加
修改值
sql getset key value -- 替换新值后,返回原来内容
给key设置过期时间
只要数据库不关闭,不清除,数据是存在的
sql SETEX key 时间(秒) value
判断key是否存在
sql EXISTS key
随机获取键名
sql random key
修改键名
sql rename key
输出内容&&退出连接&获取服务器信息
```sql echo 内容
quit
info ```
清空数据库
sql flushdb -- 清空当前数据 flushAll -- 清空所有数据库
键命令
DEL key 删除键值对DUMP key 返回序列化的valueEXSITS key 检查键是否存在,如果存在返回1不存在返回-1EXPIRE key time 设置KEY的过期时间,以秒为单位EXPIREAT key time(采用时间戳) 设置key的过期时间MOVE key index 移动key到指定下标的数据库PERSIST key 删除key的过期时间PEXPIRE key time 设置key的过期时间以毫秒为单位RANDOMKEY 随机返回一个keyRENAME key newName 修改KEY的名称SCAN 迭代器TTL key 检查Key的过期时间TYPE key 获取VALUE的数据类型
Hash命令
Hash(哈希散列)是Redis的基本数据类型之一,它以字符串映射表的形式进行存储,Hash适合用于存储对象。
hash是由字符串的filed(字段)和value组成的哈希映射表结构,非常类似于表格结构,在hash类型中field与value 一一对应,不允许重复。hash的底层有两种实现方式,第一种:当存储的数据量少时采用aiplist作为底层存储结构,第二种:采用hash表的结构存储(相当于java里的HashMap)
HSET key key value 添加键值对HGET key key 获取单个valueT HMGET key key key 获取多个valueHMSET key key value key value 添加多个键值对HDEL key key 删除HEXISTS key key 查询是否有指定keyHKEYS key 获取所有key
String 命令
APPEND key 追加字符串BITCOUNT key 获取被计算为1的比特位的数量DECR key 如果存储的是整数,则-1DECRBY key num 指定减去num的值GET key 获取指定key的值GITBIT key index获取指定偏移量上的位(根据下标获取,获取的是字符串转换为二进制的值) GETRANGE key 获取指定下标的字符GETSET key newValue 给key设置新值并返回旧值INCR key 整数+1INCRBY key num 整数+numINCRBYFLOAT 增加浮点数MGET key key获取多个keyMSET key value key value 设置多个keySTRLEN key 获取字符串长度
list命令
list相当于java中的linkedList结构,是一个链表,插入快,查询慢。
redis的底层存储结构,是快速链表的结构。当列表中存储的元素少时,redis会使用一块连续的内存,这个连续的结构被称为压缩列表(所有的元素紧挨着一块存储),当数据链较大时使用快速链表。
该链表可以被当作,栈和队列来进行使用,如果列表的元素是,先进先出(左进右出)那么就是队列模型,如果是后进先出(右进右出)就是栈模型
BLPOP key time 删除并返回列表中的第一个元素(头部操作) time是超时时间如果列表中没有元素就会发生阻塞,指导列表等待超时或者发现可弹出元素BRPOP key time 删除并返回列表中的最后一个元素(尾部操作)BRPOPLPUSH key key time 从列表中取出最后一个元素,并插入到另一个列表的头部LINDEX 通过下标获取列表中的元素LINSERT key BEFORE | AFTER targetElem elem BEFORE和After是前边或者后边,在targetElem的前边或者后边添加 elemLPOP key 从列表的头部弹出元素LPUSH key value在列表的头部插入值LRANGE key start stop 获取从start到stop范围的值LREM key count elem 从列表中删除与elem相同的值,count是数量,0则表示全部一处LSET key index elem 通过index将值设置为elemLTRIM
Set命令
Set的数据类型,由键值对组成,无序但是唯一,当集合中的最后一个元素被移除后,该数据结构会被自动删除,内存也会被收回。 set的底层存储结构是整型数组与hash table,当set的存储数据的所有成员都是整数值且不超过512个则使用整型数组存储,当不满足时使用hash table 结构存储。
``` SADD key value value 添加一个或多个value到set中
SCARD 返回集合中元素的个数
SDIFFSTORE key1 key2 key3 将key2和key3的差集存储到key1中
SINTER key1 key2 求key1 key2的交集
SINTERSSTORE 将key2和key3的交集存储到key1中
SMEMBERS key 查看集合中所有元素
SPOP key count 弹出count个元素
SRANDMEMBER key count 随机返回count个元素,默认是1
SREM key value 根据value删除一个或者多个元素
SUNION key1 key2 求key1和key2的并集
SUNIONSTORE key1 key2 key3 将key2和key3的并集存储到key1中
```
Zset命令
zset与set的区别就是有序的,zset会个每个成员元素关联一个double类型的score,redis正式通过score进行对元素进行排序
ZADD key source value source value2 将一个或者多个元素value添加到有序集合中,ZCARD key 获取集合中元素的数量ZCOUNT key min max统计集合中score在min至max的元素个数ZINCRBY key num value 给指定的value的score增加numZINTERSTORE key3 count key1 key2 将key1和key2的交集存储到key3中ZRANGE KEY start stop withscores 返回集合中从start到stop范围的元素,withscores 属于可选参数,如果加了则会同时返回元素的score
Redis的连接命令
Redis的连接命令主要用于验证Redis服务器的连接状态,比如验证客户端与Redis是否连接成功。
Redis是通过Redis序列化协议(简称"resp")实现客户端与服务端之间的连接通信。
该协议主要包括两个部分: 网络模型和序列化协议网络模型主要负责数据交互的组织方式,序列化协议则实现了数据的序列化。主要的流程就是:客户端通过RESP序列化请求服务端,服务端通过RESP序列化相应客户端的请求。AUTH 密码 验证密码是否正确ECHO 字符串 打印字符串PING 查看服务是否运行正常QUIT 关闭当前连接