码迷,mamicode.com
首页 > 其他好文 > 详细

redis的基本使用

时间:2021-04-06 15:05:17      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:eve   ade   影响   hash   sha   统计   命令   nil   exit   

redis简介(nosql)

安装win:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100

redis是一个高性能的键值对key-value数据库

特征:

数据间没有必然的关联关系

内部采用单线程机制进行工作

高性能。

数据类型支持

  1. 字符串 string

  2. 列表类型 list

  3. 散列类型 hash

  4. 集合类型 set

  5. 有序集合类型 sorted_set

持久化存储,所以是删库跑路的好帮手

redis 的应用场景

  1. 热点数据加速查询,如热点商品,热点新闻,热点资源,推广类等高访问量信息等。

  2. 任务队列,如秒杀,抢购,购票排队。

  3. 即时信息的查询,如各位排行榜,各类访问网站统计,公交到站信息,在线人数信息(聊天室) 设备信息,高德地图。

  4. 时效性信息控制,如验证码,投票控制 等。

  5. 分布式数据共享,如分布式集群架构中的session分离

  6. 消息队列

  7. 分布式锁

redis的核心文件

  1. redis-server.exe 服务器启动命令(启动redis PID随机生成)

  2. redis-cli.exe 命令行客户端(客户端启动)

  3. redis.windows.conf redis的核心文件配置

  4. redis-benchmark.exe redis的性能测试

  5. redis-check-aof.exe AOF文件修复工具

  6. 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 ...
  -- 求俩个集合的交,并,差集并存储到指定集合中
  sinterstore destination key key1 ...
  sunionstore destination key key1 ...
  sdiffstore destination key key1 ...
  -- 将指定的数据从原始集合中移动到目标集合中
  smove source destination member
-- 注意事项
set 类型是不允许数据重复,如果添加的数据在set中有name就只保存一份

5. 有序集合类型 sorted_set TreeSet
-- sorted_set 类型数据的基本操作
-- 添加数据
zadd key score member ...
-- 获取全部数据
zrang key strat stop [withscores]
zrevrange key start stop [withscores]
-- 删除数据
zrem key member ...
-- 按条件获取数据
zrangebyscore key min max [withscores] [limit]
zrevrangebyscore key max min [withscores]
-- 条件删除数据
zremarangebyrank key strat stop
zremrangebyscore key min max
注意:
min与max用于限定搜索查询的条件
strat与stop用于限定查询范围,作用于索引,表示开始索引和结束索引
offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量
-- 获取集合数据总量
zcrad key
zcount key min max
-- 集合交,并操作
zinterstore destination mumkeys key
zunionstore destination mumkeys key
-- 获取数据对应的索引(排名)
zrank key member
zreverank key member
-- score值获取与修改
zscore key member
zincrby key increment member
-- 获取当前时间
time
注意事项:
score保存的数据也可以是一个双精度的double值,所以使用需注意
score_set底层存储还是基于set结构的,因此数据不能重复,如果重复提交name前面的数据将会被覆盖,保留最后一次修改结果。
?
key 基本操作
-- 删除指定的key
  del key
  -- 获取key是否存在
  exists key
  -- 获取key的类型
  type key
key 扩展操作(时效性控制)
expire key seconds (秒)
pexpire key milliseconds (毫秒)
expire key timestamp ---liunx时间戳
pexpireat key milliseconds-timestamp --liunx时间戳
获取key的有效时间
ttl key (反回-2为失效,反回-1为没有设置有限时间)
pttl key
切换key从时效性转换为永久性
persist key
查询key
key pattern(*?[]正则类似)
为key改名
rename key newkey
renamenx key newkey
对所有的key排序
sort (只是排序对元数据不做修改)
其他key通用操作
help @generic
数据库的基本操作
-- 切换数据库
select index(索引)
-- 其他操作
quit
ping
echo message
-- 数据移动
move key db
-- 数据清除操作
dbsize
flushdb
flushall

 

redis的基本使用

标签:eve   ade   影响   hash   sha   统计   命令   nil   exit   

原文地址:https://www.cnblogs.com/thaimj1314520/p/14617442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!