首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis写的数据怎么没了?

1、我Redis写的数据怎么没了? 使用Redis的同学你要明白一点,你为什么用Redis?用redis的作用是什么?用redis的好处是什么?凡事多思考一下为什么,多想想背后的原因。...那是因为你不知道Redis是怎么删除那些过期key的。...5个G的数据都过期了,我从redis查,是查不到了,结果过期的数据为啥还占用着Redis的内存呢。...如果过期了此时就会删除,不会给你返回任何东西。 所以并不是key到时间就被删除掉,而是你查询这个key的时候,Redis再懒惰的检查一下。 通过上述两种手段,保证过期的key一定会被干掉。...但是实际上这还是有问题的,如果定期删除漏掉了很多过期key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期key堆积在内存,导致redis内存块耗尽了,咋整?

96620
您找到你想要的搜索结果了吗?
是的
没有找到

在公司感觉学不到东西怎么办?

在公司工作到了现在,感觉学不到什么新东西了。有二种可能,一是公司业务你都掌握了,确实没什么搞头了;二是你在公司负责的都是些初级的开发任务。...不要觉得手头的东西都已经很简单了,随便搞搞就行了,反正再怎么搞也显不出来你能耐。不要有这种想法,因为互联网的边际效应递减,任何简单的东西当它的数量级另达到千万的时候,都会成为一个工程难题。...那么,就拿静态页面来讲,怎么把它的dom节点和层级搞的比较有效率?这就是个大问题。...从我个人的角度,现在回过头来看,在公司你的工作成果,要站在公司产品的层面上来衡量,这也是为什么会有人说“做前端开发的都要有产品意识”的意思。 怎么把简单的东西做出高质量?...质量这个东西不是单独存在的,它有一个衡量标准,标准就是公司的产品或用户。 你做的这个东西,在公司的产品,或是给用户使用的时候,会不会达到最好的效果?如果达不到,怎么样才能达到?

84970

华人学者Linux内核提交bug,社区把整个明尼苏达大学拉黑了

现在你们又提交一系列明显错误的补丁,你叫我怎么想? Greg放下狠话,未来任何来自umn.edu邮箱的提交都应被默认拒绝。...而K.J Lu教授带领的团队,正是之前给Linux内核社区提交过“垃圾代码”、来进行“分析开源软件漏洞”研究的团队。...这番言论惹怒了Linux内核管理员Greg。 他表示,自己将会禁止明尼苏达大学对Linux内核做出贡献,并会取消这一研究小组此前所有的贡献,因为这些提交“显然都是恶意的行为”。...这样的话,禁止全校对Linux内核社区做贡献,可能是唯一的选择。 据ZDNet报道,不少Linux社区的开发者和管理员,都持有这样的看法。...当然,也有网友认为,Linux也应该采取更安全的方式进行代码贡献: 在这件事情中,双方都应该汲取教训。 ?

43620

线上Go项目的Docker镜像应该怎么构建?

镜像构建的过程一般都是先用Docker容器把项目编译成二进制文件,然后把编译好的文件拷贝到一个新的容器镜像,新镜像一般只包含Linux系统运行需要的最基本的文件,不需要有Go环境,因此能减少很多占用空间...Docker Engine版本 下面就来介绍一下怎么使用Docker的多阶段构建制作Go应用的镜像。...golang:alpine指定了Go基础映像的alpine版本, alpine是专门为容器设计的小型Linux发行版。...使用scratch镜像可以节省大量空间,因为我们实际上不需要Go工具或其他任何东西来运行我们的编译好的程序,这可能也是Go在容器时代的一个优势吧。...这个也是我们最近项目Kubernetes上迁移时遇到的第一个问题,不过还好经过Google和查看Go加载系统时区的源码我帮新来的运维小哥哥找到了解决方法,具体怎么解决的下期的文章再告诉大家。

2.2K10

Framework笔记 | Android Framework用到了哪些IPC方式,分别在哪里用到

是否了解Linux常用的跨进程通信方式 android很多底层实现, 都依赖于Linux的操作系统调用; 是否研究过Android Framework并了解一些实现原理 是否了解Framework各组件之间的通信原理...Linux IPC方式 管道 Socket 共享内存 信号 管道通信 半双工的,单向的 管道的描述符数据只能一个方向流,要么读要么写, 如果需要既能读又能写,则需要给管道有两个描述符; 不过Linux...有名管道只要两个进程都知道这个管道的名字就可以通信了; 看一个例子 通过pipe调用,生成管道的一对描述符; fd[1]是用来写的; fd[0]是用来读的; 通过fork()调用创建一个子进程; 子进程会继承这对描述符; 现在我们要父进程子进程里面写东西..., 管道满了就写不进去了,所以二话不说先读出来; 不管管道里面写了什么东西, 只要写了东西,这个线程 就能被唤醒,就能去处理消息; 当别的线程 要这个Looper线程里面写东西的时候,...就通过wake()函数管道里边写东西: ?

1K30

聊聊Linux IO

塔顶,存取效率越高、但成本也越高,所以容量也就越小。得益于程序访问的局部性原理[2],这种节省成本的做法也能取得不俗的运行效率。...综上,既然讨论 Linux 下的 IO 操作,自然是跳过 stdio 库的用户态这一堆东西,直接讨论系统调用层面的概念了。对 stdio 库的 IO 层有兴趣的同学可以自行去了解。...设备层,通过 DMA 与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程用到的Buffered IO、mmap(2)、Direct IO,这些机制怎么Linux IO...然后请求继续到达块设备层,在 IO 队列排队,接受一系列的调度后到达设备驱动层,此时一般使用DMA方式读取相应的磁盘扇区到 Cache 中,然后read(2)拷贝数据到用户提供的用户态buffer 中去...对应到 Linux 的Page Cache上所谓Write Through就是指write(2)操作将数据拷贝到Page Cache后立即和下层进行同步的写操作,完成下层的更新后才返回。

3.2K21

Linux内核移植_rom内核移植

u-boot有了,现在说说怎么把.bin文件烧写到sd上吧。首先把.bin文件拷贝linux系统中,随便在一个文件夹下就行。下来就是sd烧写了,当然了sd是必须的嘛。...这里给个插曲,把sd插到电脑后,windows下发现了,但虚拟linux系统发现不了,后来是通过这么解决的,点击VMware的VM—–>Rmovables Devices——->USB Device...在linux-3.3.5目录下,通过cp arch/arm/configs/s5pv210_defconfig .config 把对smdkv210板的配置文件拷贝linux-3.3.5目录下,并且保存为...拷贝一个mkimage文件到相应的交叉编译器的相应的目录下,mkimage是bootloadertools目录下的一个文件,我这里提供的这个文件也是友善2440带的,给大家一个链接吧: http://...不过现在只是内核编译通过,怎么样让它在tiny210上启动了,这个下一篇,咱们继续! 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

4.6K10

如何在GitHub上传项目贡献代码

如果作为新手你看书又看不进去,原理又太复杂,有没有直接了当告诉我们怎么给项目贡献代码,并和项目同步代码的大体流程。于是我快速写了这么个东西。...一来整理下自己混乱的思路,二来想号召大家一起用Git开发点东西,可是好几个同鞋只会寂寞的给自己push。...我之前对GitHub操作的一些迷茫历程,然后之后是怎么解惑的。...当然,如《Pro git》上所写,你可以通过新建分支的方式自己的项目上push,这样同步的时候直接fetch就行了。...这块如果我没写明白或者你想知道怎么新建分支的方式push到自己的项目,可以直接参考《Pro git》的“公开的小型项目”一节,那我的贡献就是指点你如何从这本书里快速的找到你想要的。

58920

进程通信

一切皆文件”,管道也 文件 ,ls 看, 文件类型是 p ,就是 pipe(管道) 意思 2) myPipe 写入数据: 因为内容没被读,只有读后,命令才正常退出 3)读出 了,echo 命令正常退出...ps:匿名管道是 特殊文件 ,只在 内存 ,不存文件系统 2)管道,就是内核一串缓存 。...Linux 内核中有MSGMAX 和 MSGMNB 消息和队列最大长,字节为单位 三、共享内存 解决 用户态与内核间的 消息拷贝 1、内存管理: 进程有自己独立的 虚拟内存空间 , 不同进程 的 虚拟内存...这样写入,另一进程马上能看到, 不需拷贝,传来传去,提高通信速度 四、信号量 共享内存问题,同时修改同一共享内存,冲突。...connect ,向服务器端的地址和端口发起连接请求; 4)服务端 accept 返回用于传输的 socket 文件描述符;ps:连接成功 返回已完成连接socket ,通过read 和 write 读写,像文件流里面写东西一样

1.1K45

Linux 进程、线程、文件描述符的底层原理

一、进程是什么 首先,抽象地来说,我们的计算机就是这个东西: ?...用户空间装着用户进程需要使用的资源,比如你在程序代码开一个数组,这个数组肯定存在用户空间;内核空间存放内核进程需要加载的系统资源,这一些资源一般是不允许用户访问的。...所以说,我们的多线程程序要利用锁机制,避免多个线程同时同一区域写入数据,否则可能造成数据错乱。...在 Linux 中新建线程和进程的效率都是很高的,对于新建进程时内存区域拷贝的问题,Linux 采用了 copy-on-write 的策略优化,也就是并不真正复制父进程的内存空间,而是等到需要写操作时才去复制...所以 Linux 中新建进程和新建线程都是很迅速的。 以上就是全部内容,如果有帮助的话,不妨点个在看,我看看操作系统相关的文章阅读数据怎么样,不错的话以后可以再写写操作系统方面的小知识。

2.3K30

Linux 进程、线程、文件描述符的底层原理

一、进程是什么 首先,抽象地来说,我们的计算机就是这个东西: 这个大的矩形表示计算机的内存空间,其中的小矩形代表进程,左下角的圆形表示磁盘,右下角的图形表示一些输入输出设备,比如鼠标键盘显示器等等。...用户空间装着用户进程需要使用的资源,比如你在程序代码开一个数组,这个数组肯定存在用户空间;内核空间存放内核进程需要加载的系统资源,这一些资源一般是不允许用户访问的。...就比如说,mm结构和files结构在线程中都是共享的,我画两张图你就明白了: 所以说,我们的多线程程序要利用锁机制,避免多个线程同时同一区域写入数据,否则可能造成数据错乱。...在 Linux 中新建线程和进程的效率都是很高的,对于新建进程时内存区域拷贝的问题,Linux 采用了 copy-on-write 的策略优化,也就是并不真正复制父进程的内存空间,而是等到需要写操作时才去复制...所以 Linux 中新建进程和新建线程都是很迅速的。 以上就是全部内容,如果有帮助的话,不妨点个在看,我看看操作系统相关的文章阅读数据怎么样,不错的话以后可以再写写操作系统方面的小知识。

1.3K10

如何 build 出尽可能小的 docker image?

案例 目标 非常简单,build 一个 java 镜像 基于 centos 基础镜像,和下载好的 jdk-8u101-linux-x64.tar.gz 过程 1)第一版 Dockerfile 内容: FROM...-linux-x64.tar.gz && rm /usr/local/jdk-8u101-linux-x64.tar.gz ENV JAVA_HOME /usr/local/jdk1.8.0_101...src.zip(21M) 这两个源码包文件,我们在实际环境中可能并不需要他们,那么拷贝到镜像中就比较多余了 Docker 有一个过滤功能,可以让我们排除掉不需要的文件,方法是编写 .dockerignore...小结 上面的案例中,优化的思路就是尽量少镜像东西 还有一点比较重要,一定要选用最合适的基础镜像,例如: 可以看看只有 5MB 的 alpine 镜像是否能满足自己的需求,ubuntu、centos...通用镜像,需要其他镜像时就以此为基础,但如果有的 service 只需要 Ruby 而不要 Rails 等其他东西,这时就多余了,有精力的话可以把基础镜像拆分得更细一些

1.5K70

小师妹学JavaIO之:目录还是文件

除了文件本身的数据之外,还有很多元数据的东西,比如文件权限,所有者,group,创建时间等信息。 在linux系统中,这两个部分是分开存储的。...04 目录的进阶操作 好了小师妹,你懂了就行,下面F师兄给你讲一下目录的进阶操作,比如我们怎么拷贝一个目录呀?...其实Files工具类已经为我们提供了一个拷贝文件的优秀方法: public static Path copy(Path source, Path target, CopyOption... options...如果想要拷贝目录,就遍历目录中的文件,循环调用这个copy方法就够了。 小师妹:且慢,F师兄,如果目录下面还有目录的,目录下还套目录的情况该怎么处理? 这就是圈套呀,看我用个递归的方法解决它: ?...基本思想就是遇到目录我就遍历,遇到文件我就拷贝。 05 目录的腰疼操作 小师妹:F师兄,假如我想删除一个目录中的文件,或者我们想统计一下这个目录下面到底有多少个文件该怎么做呢?

36010

(转载)buffer和cache怎么让你们解释的那么难理解?

,ab都会缓存一个拷贝下来放在自己的大本营,如果下次A或者其他C来取B的东西,ab直接就给A或C一个货真价实的赝品,然后把它通过a接口给了A或C,由于a的速率相对接近A的接口速率,所以A觉得不错为他省了时间...所以在这种工作模式下,怎么取得的东西是最新的也是我们需要考虑的,一般就是清cache。...的接口速率最少大于B接口速率,所以也不会存在漏洞时间,但最终的结果是A节约了时间就可以干其他的事务,说白了就是推卸责任,哈哈而ab此时提供的就是一种缓冲的能力,即buffer,它存在的目的适用于当速度快的速度慢的输出东西...接下来说一下Linux怎么查看buffer/cache,怎么flush...cache ?...我们知道Linux的一个重要思想是一切皆文件,比如各种输入输出设备:键盘,鼠标,网卡,显示器,打印机,U盘,console口,在linux的国度都可为其创建一个文件作为访问设备的入口,而内核的各种参数也被映射成了文件

59120

如果你这样回答“什么是线程安全”,面试官都会对你刮目相看

你拿1万块钱地上一扔,就回家睡觉去了。睡醒后你打算去把它捡回来,发现钱已经不见了。可能被别人拿走了。 因为公共区域人来人,你放的东西在没有看管措施时,一定是不安全的。内存中的情况亦然如此。...因为你放东西的“位置”只有你自己知道(或能到达),所以东西是安全的,因此这份安全是由“位置”来保障的。 在程序就对应于方法的局部变量。局部变量之所以是安全的,就是因为定义它的“位置”是在方法。...那怎么保证在公共区域的东西安全呢?答案就是,大家不要抢,人人有份。设想你在街头免费发放矿泉水,来了1万人,你却只有1千瓶水,结果可想而知,一拥而上,场面失守。...回到程序,要让公共区域堆内存中的数据对于每个线程都是安全的,那就每个线程都拷贝它一份,每个线程只处理自己的这一份拷贝而不去影响别的线程的,这不就安全了嘛。...每个线程在运行时都会拷贝一份存储到自己的本地。 A线程运行的是“张三”和“90”,那么这两个数据“张三”和“90”是存储到A线程对象(Thread类的实例对象)的成员变量去了。

58350
领券