您的位置:首页 > 娱乐 > 明星 > 网站建设品牌公司推荐_建个企业网站需要什么_网络营销方案案例_营销咨询

网站建设品牌公司推荐_建个企业网站需要什么_网络营销方案案例_营销咨询

2025/5/9 16:44:13 来源:https://blog.csdn.net/2301_76661918/article/details/146281393  浏览:    关键词:网站建设品牌公司推荐_建个企业网站需要什么_网络营销方案案例_营销咨询
网站建设品牌公司推荐_建个企业网站需要什么_网络营销方案案例_营销咨询

最开始使用的是MySQL,其使用的是磁盘IO方式较慢,无法满足一分钟成千上万次的访问,而使用内存IO的Redis就可以较好的满足。

Redis是NOSQL(Not Only SQL)中的键值存储数据库,性能好较灵活,是在内存中进行存储。

可以通过redis-serve启动服务,通过redis-cli ip地址来连接。

redis没有严格的表结构,而是类似Map的存储方式,一般有16个数据库。

可以使用 select index 来选择不同的数据库,而向redis内部存放数据时,使用的方法也和向map中存放数据类似。set key value 或是mset key value key value .....。

存放数据时不同模块之间可以使用:进行分割,例如要存用户信息中的名字

set user:info:name lbw

存放数据时还可以设定过期时间 set name lbw ex 10(十秒过期),使用ttl key可以查询到相关时间,或者是使用 expire key sec 对以及存在的键设定过期时间

如果要获取数据使用 get key,随机获取键就是 randomkey,删除数据用 del key,如果要查询所有的键,key *,如果要判断某个键是否存在使用 exist key,如果要将数据转移到别的数据库, move key db,还可以对其重命名,rename key newname ,如果使用renamex 就会自动判断是否有重叠。

如果value是纯数字,则可使用自增自减操作incr key,decr key ,如果使用incrby等就可以加上自增的次数

使用 type key 可以查询value的数据类型

通常如果直接存储,形式为字符串,同时还有Hash,就是键值对的值也是一个类似HashMap。通常用来存类相关的数据 

Hash

存入时使用命令hset key key value.....,取出使用hget key 内层key。如果要一次性获取所有key值使用hgetall key

删除其中的一个字段,hdel key key ,删除hash:del hkey

hexists 判断某个字段是否存在,hlen 判断字段数目

hval key 一次性获得所有字段的值

但是hash内的值一定是字符串,且不能套娃

List

基本同Java的List

阻塞pop可以同时向多个队列要求数据,谁先有谁弹出

Set和SortedSet

也是和Set相同,不过更像数学上的集合可以进行运算

如果需要集合有序,则需要引入SortedSet,给每个元素附上一个分数,按分数排序,此处添加元素部分应该先写分数后写Key

持久化

由于Redis的所有数据都保存在内存,一旦断电数据丢失,因此将其保存到硬盘也就是持久化非常重要,主要有两种方法一种是直接复制数据保存,另一种是复制保存数据的过程重新对硬盘执行一次。

方法一 RDB

可以开启后台进程进行保存。

方法二 AOF

虽然RDB解决持久化问题,但每次都要完整复制数据库。造成不必要的内存呢开销,也不是实时保存,如果在保存前服务器崩溃依然会导致数据丢失,因此引出AOF,以日志形式记录每次的操作,再根据操作进行恢复,现在默认的方式就是方式2

但是这样依然有问题,大量指令会导致文件过于庞大,导致性能浪费,指令其实可以进行压缩,使用指令bgrwriteaof

或者再配置文件中设置自动重写

Redis也有事务和锁机制保证一段指令完整执行不受其他指令影响

Redis是将命令存储后在输入exec后统一执行

Redis的锁是乐观锁,MySQL与sync都是悲观锁

使用的是 watch key,针对该变量,有一个版本号,如果版本不变继续事务,如果发生改变就取消事务。
和Java进行交互

主要使用的包是jedis

想要调用Redis只需要创建Jedis对象

通过Jedis就可以调用Redis命令

和Spring框架结合,加入依赖只要注入RedisTemplate,所有值相关的操作都需要

RedisTemplate.opsForValue().命令() 字符串操作

opsForHash().命令() Hash操作

以此类推

删除就是直接delete,存在变为hasKey()

Redis此时的事务管理,Java中没有定义,可以借用JDBC的注解,但是内部还是使用Redis的命令

还可以通过Serializer将键值转换为JSON

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com