目录
16.网络通信想看一下当前系统某端口是否开启了监听(netstat)
1.redis的常用数据结构
2.String类型的实现
3.各种数据类型的使用场景
-
字符串(String):用于存储单个值,可以是字符串、整数或浮点数。常用于缓存、计数器、分布式锁等场景。
-
哈希(Hash):用于存储字段-值对的集合。适合存储对象、用户信息、配置等数据,并能够方便地单独获取、修改、删除字段的值。
-
列表(List):用于存储有序的字符串元素列表。支持从两端进行元素的插入和删除操作,适合实现消息队列、最新消息推送等场景。
-
集合(Set):用于存储不重复的字符串元素集合。提供了对集合的交集、并集、差集等操作,适合去重、标签系统、好友关系等场景。
-
有序集合(Sorted Set):类似于集合,但每个元素都关联一个分数,可以根据分数进行排序。适合存储排行榜、优先级队列等场景。
-
位图(Bitmap):用于存储位数据,可以进行位操作,如统计用户活跃情况、记录用户签到等场景。
-
地理空间(Geospatial):用于存储地理位置信息,支持对地理位置进行查询和计算,适合实现附近的人、地点检索等场景。
4.redis常用的命令
5.用户新增留言,redis如何更新
在留言板中,Redis可以作为缓存层来优化系统性能,将常用的或者热点数据缓存到Redis中,减少访问数据库的负担,并提高系统的访问速度。而如果用户新增留言,我们需要更新数据库以及同步更新Redis数据。常见的做法是使用MySQL数据库作为留言板数据存储,以及使用Redis作为留言板数据缓存,在用户新增留言时需要进行以下操作:
1. 应用程序先将留言信息写入MySQL数据库中,确保数据已经存储到数据库中;
2. 然后应用程序再将留言信息写入Redis缓存中,确保Redis缓存中的留言数据与数据库中的数据是同步的;
3. 在下一次查询请求中,应用程序先尝试从Redis缓存中获取留言信息,如果Redis中不存在,再从MySQL中获取。
在以上过程中,我们要保证MySQL数据库与Redis缓存 数据的实时一致性。为此,我们可以考虑使用消息队列等工具,将MySQL数据库的数据更新操作和Redis缓存的数据更新操作封装成消息,并发送到消息队列中。这样,在应用程序从消息队列中获取到相应的消息后,就可以执行相应的操作,并确保MySQL数据库与Redis缓存中的数据保持一致。
6.如何保持数据的一致性
7.Redis中留言板的key是什么
8.Redis中留言和对应评论的层级关系如何实现
9.Redis中当只知道留言id时如何获取全部对应评论
10.MySQL中当如何获取全部对应评论
11.如果不使用JOIN操作,如何查找
12.进程和线程的区别
13.线程间的临界区
-
synchronized关键字:synchronized关键字可以修饰方法或代码块,保证同一时间只有一个线程可以执行被修饰的代码。当一个线程进入synchronized代码块时,它会获取锁,其他线程需要等待锁释放才能执行该代码块。synchronized关键字提供了隐式的锁机制,简单易用。
-
ReentrantLock类:ReentrantLock是Java提供的可重入锁的实现,它提供了更灵活的锁定机制。使用ReentrantLock可以通过lock()方法获取锁,通过unlock()方法释放锁。与synchronized相比,ReentrantLock提供了更多高级特性,如公平锁、可中断锁、多个条件变量等。
-
Lock接口:除了ReentrantLock,Java还提供了Lock接口,它是一个通用的锁定接口,可以通过不同的实现类选择合适的锁机制。Lock接口提供了与synchronized类似的功能,但更加灵活。