redis

4.1 关于redis线程问题
redis的单线程的,那么单线程为什么还这么快?
Redis 的数据结构并不全是简单的 Key-Value,还有 list,hash 等复杂的结构。这些结构有可能会进行很细
粒度的操作,比如在很长的列表后面添加一个元素,在 hash 当中添加或者删除一个对象。这些操作可能就
需要加非常多的锁,导致的结果是同步开销大大增加。
总之,在单线程的情况下,代码更清晰,处理逻辑更简单,不用去考虑各种锁的问题,不存在加锁释放锁操
作,没有因为可能出现死锁而导致的性能消耗,不存在多进程或者多线程导致的切换而消耗 CPU。
单线程多进程的集群方案
单线程的威力实际上非常强大,每核效率也非常高。多线程自然是可以比单线程有更高的性能上限,但是在
今天的计算环境中,即使是单机多线程的上限也往往不能满足需要了,需要进一步摸索的是多服务器集群化
的方案,这些方案中多线程的技术照样是用不上的。所以单线程、多进程的集群不失为一个时髦的解决方
案。
CPU 消耗
采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。
但是如果 CPU 成为 Redis 瓶颈,或者不想让服务器其他 CPU 核闲置,那怎么办?
可以考虑多起几个 Redis 进程,Redis 是 key-value 数据库,不是关系数据库,数据之间没有约束。只要客
户端分清哪些 key 放在哪个 Redis 进程上就可以了。
4.2 redis 基础命令
4.2.1 数据库切换操作
4.2.2 查看当前数据库
4.2.3 清除数据库中的数据
flushdb 删除当前库 – 前提进入当前数据库中
flushall 删除所有库
127.0.0.1:6379> PING #检查连接
PONG
127.0.0.1:6379> SELECT 15
OK
127.0.0.1:6379[15]> SELECT 16 #一共16个库 0-15
(error) ERR DB index is out of range
127.0.0.1:6379[15]> SELECT 0 #默认是0 不显示索引
OK
127.0.0.1:6379>
127.0.0.1:6379> SET student zhangsan #增加一个数据
OK
127.0.0.1:6379> SET student lisi #相同key增加一个数据 会覆盖掉
OK
127.0.0.1:6379> GET student # 取值
“lisi”
127.0.0.1:6379> KEYS * # 查看所有的key

  1. “list11”
  2. “student”
  3. “user:1:age”
  4. “user:1:name”
    127.0.0.1:6379>
    127.0.0.1:6379> SET student zhangsan #在索引0库加信息
    OK
    127.0.0.1:6379> SET teacher lisi #在索引0库加信息
    OK
    127.0.0.1:6379> select 5 #切换索引为5的库
    OK
    127.0.0.1:6379[5]> SET user wangwu #在索引5库加信息
    OK
    127.0.0.1:6379[5]> KEYS *
  5. “user”
    127.0.0.1:6379[5]> FLUSHDB #清除当前库
    OK
    127.0.0.1:6379[5]> keys *
    (empty array)
    127.0.0.1:6379[5]> SELECT 0
    OK
    127.0.0.1:6379> KEYS *
    4.2.4 设置过期时间
    4.2.5 查看key类型
    4.2.5 查看key是否存在
  1. redis数据类型
    redis存在5种基本数据类型和三种特殊类型
  1. “teacher”
  2. “student”
    127.0.0.1:6379> SELECT 5
    OK
    127.0.0.1:6379[5]> FLUSHALL #清空所有的库信息
    OK
    127.0.0.1:6379[5]> SELECT 0
    OK
    127.0.0.1:6379> KEYS *
    (empty array)
    127.0.0.1:6379>
    127.0.0.1:6379> set student jiazong
    OK
    127.0.0.1:6379> EXPIRE student 30 #设置过期 秒数
    (integer) 1
    127.0.0.1:6379> TTL student
    (integer) 18
    127.0.0.1:6379> TTL student
    (integer) 16
    127.0.0.1:6379> TTL student #查看过期时间
    (integer) 14
    127.0.0.1:6379> TTL student
    (integer) 7
    127.0.0.1:6379> TTL student
    (integer) -2
    127.0.0.1:6379> get student
    (nil)
    127.0.0.1:6379>
    type key
    EXISTS key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值