标签:eve ade 影响 hash sha 统计 命令 nil exit
安装win:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100
redis是一个高性能的键值对key-value数据库
特征:
数据间没有必然的关联关系
内部采用单线程机制进行工作
高性能。
数据类型支持
字符串 string
列表类型 list
散列类型 hash
集合类型 set
有序集合类型 sorted_set
持久化存储,所以是删库跑路的好帮手
redis 的应用场景
热点数据加速查询,如热点商品,热点新闻,热点资源,推广类等高访问量信息等。
任务队列,如秒杀,抢购,购票排队。
即时信息的查询,如各位排行榜,各类访问网站统计,公交到站信息,在线人数信息(聊天室) 设备信息,高德地图。
时效性信息控制,如验证码,投票控制 等。
分布式数据共享,如分布式集群架构中的session分离
消息队列
分布式锁
redis的核心文件
redis-server.exe 服务器启动命令(启动redis PID随机生成)
redis-cli.exe 命令行客户端(客户端启动)
redis.windows.conf redis的核心文件配置
redis-benchmark.exe redis的性能测试
redis-check-aof.exe AOF文件修复工具
redis-check-dump.exe RDB文件检查工具(持久化文件)
redis的基本操作
信息添加
-- 功能:设置key,value值
-- 命令
set key value
-- 范例
set name maji
查询信息
-- 功能:根据key查询对应的value,如果不存在则返空(nil)
-- 命令get key
-- 范例
get name
清屏:clear
帮助命令
-- help 命令名
help get
退出 -- exit --quit -esc
redis 的存储类型(缓存)
系统功能优化升级
-- 单服务器升级集群
-- session 管理
-- Token 管理
数据类型支持
redis 数据存储格式
-- redis 自身是一个Map,其中所有的数据都是采用key-value的形式存储
1.字符串 string String
-- 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
-- 存储数据的格式:一个存储空间保存一个数据
-- 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作
-- 添加数据
set key value
-- 获取数据
get key
-- 删除数据
del key (删除成功反回的是(integer)1 失败反回0)
-- 添加修改多个数据
mset key1 value1 key2 value2 ....
-- 获取多个数据
mget key1 key2 ...
--- 获取数据字符个数(字符串长度)
skrlen key
-- 追加信息到原始信息后部(如果原始信息存在就追加,否则就新建)
append key value
-- 设置数值数据增加指定范围的值(自增)
incr key
incrby key increment
incrbyfloat key increment
-- 设置数值数据减少指定范围的值(自减)
decr key
decrby key increment
-- string作为数值操作
string在redis内部存储默认就是一个字符串,当遇到增减的incr,decr时会转成数值型进行计算。
redis的所有操作收拾原子性的,采用单线程处理所有的业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。
注意: 数据如果是非数值类型或者超出上限则报错
-- redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性
-- 此方案适用于所有的数据库,且支持数据库集群
-- 设置一个数据具有的指定生命周期
-- setex key seconds value(秒)
-- psetex key milliseconds value(毫秒)
--redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性控制的操作
?
2. 列表类型 list LinkedList
-- 数据存储需求:存储多个数据,并对数据进行空间的顺序进行区分
-- 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
-- list类型:保存多个数据,底层使用双向链表存储结构实现
-- list 数据类型基本操作
-- 添加/修改数据
lpush key value1 value2 (这个插入的数据取值时反向取--左进)
rpush key value1 value2 (插入的数据取值时正向操作--右进)
-- 获取数据
lrange key start stop (start开始索引stop结束索引 不知道结束索引可以用 0 -1)
lindex key index (根据索引查看值)
llen key (查看key的长度)
-- 获取并删除数据
lpop key (左面取值删除)
rpop key (右面取值删除)
-- 规定时间内获取并移除数据
blpop key1 key2 timeout
brpop key1 key2 timeout
-- 移除指定数据
lrem key count value (count指定的个数 value为删除的值)
-- 注意事项
list 中保存的数据都是string类型
list具有索引的概念,但是操作数据时通常以队列的形式进行队出队进的操作,或以栈的形式进行栈出栈入操作
获取全部数据操作结束索引设置为-1
list可以对数据进行分页操作,通常第一页的信息来自list,第二页及更多的信息通过数据库的形式加载
?
?
?
3. 散列类型 hash HashMap
-- 新的存储需求:对一系列的数据进行编组,方便管理,典型应用存储对象信息
-- 需要的存储结构:一个存储空间保存多个键值对数据
-- hash类型:底层使用哈希表结构实现的数据存储
-- hash 类型数据的基本操作
-- 添加/修改数据
hash key field value
hash user name maji age 24
-- 添加/修改多个数据
hmset key field1 value1 field2 value2 ....
hmset user name maji age 24
-- 获取数据
hget key field
hgetall key
-- 获取多个数据
hmget key filed filed2 ...
hmget usre
-- 获取hash表中字段的数量
hash key
-- 获取哈希表中是否存在指定的字段
hexists key field
-- 删除数据
hdel key field field2 ...
--获取哈希表中所有的字段名和字段值
hkeys key
hvals key
-- 设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment
-- 注意事项
-- hash 类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如数据未读取到,对应的值为(nil)
-- hash 类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性,但是hash设计初衷不是为了存储大量对象而设计的,切记不可以滥用,更不可以将hash作为对象列表使用.
-- hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据就会很低,有可能成为数据访问瓶颈。
4. 集合类型 set HashSet
--set类型数据的基本操作
-- 添加数据
add key member1 member2
-- 获取数据
semembers key
-- 删出数据
srem key member1 member2
-- 获取集合数据总量
scard key
-- 判断集合中是否包含指定数据
sismember key member
-- 随机获取集合中指定数量的数据
srandmember key count
-- 随机获取集合中的某个数据并将该数据移除集合
spop key
-- 求俩个集合的交,并,差集
sinter key key1 ..
sunion key key1 ...
sdiff key key1 ...