基础知识
-
redis 默认有16个数据库
可以在redis.windows.conf文件中找到(database 16)
-
默认使用的是第0个数据库
可以使用select 切换数据库
select 0
127.0.0.1:6379[3]> select 0 #切换数据库 OK 127.0.0.1:6379> dbsize #查看数据库大小 (integer) 0 #没有数据所以是0 127.0.0.1:6379> set name qian #插入数据 OK 127.0.0.1:6379> get name #查询数据 "qian" 127.0.0.1:6379> dbsize (integer) 1 #size发生了变化 127.0.0.1:6379>
-
**keys ***查看所有的key
127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> set age 34 OK 127.0.0.1:6379> set sex ᅣ OK 127.0.0.1:6379> get sex "\xc4\xd0" 127.0.0.1:6379> keys * 1) "sex" 2) "age" 3) "name" 127.0.0.1:6379>
-
flushall 清空所有数据(16个库全部清空)
-
flushdb 清空当前数据库
-
exists检查key是否存在
127.0.0.1:6379> exists name (integer) 1 #存在的返回1 127.0.0.1:6379> 127.0.0.1:6379> exists age (integer) 0 #不存在返回0 127.0.0.1:6379>
-
move移除,就是删除
127.0.0.1:6379> move name 1 #1表示当前库 (integer) 1 #移除name这个key和对应的值 127.0.0.1:6379> 127.0.0.1:6379> exists name (integer) 0 #移除后检查存在 127.0.0.1:6379>
-
expire设置过期时间
127.0.0.1:6379> set name qian OK 127.0.0.1:6379> expire name 10 #设置10秒后过期 (integer) 1 127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> keys * 1) "name" 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379>
-
ttl查看剩余有效时间
127.0.0.1:6379> set name qian OK 127.0.0.1:6379> expire name 10 (integer) 1 127.0.0.1:6379> ttl name (integer) 6 127.0.0.1:6379> ttl name (integer) 4 127.0.0.1:6379> ttl name (integer) 3 127.0.0.1:6379> ttl name (integer) 1 127.0.0.1:6379> ttl name (integer) -2 127.0.0.1:6379> ttl name (integer) -2 127.0.0.1:6379>
-
type查看key的类型
127.0.0.1:6379> type name string 127.0.0.1:6379> set 1 3 OK 127.0.0.1:6379> type 1 string #注意上面这个1的key也是string 127.0.0.1:6379>
-
Redis是单线程的
redis是基于内存操作的,CPU不是Redis的性能瓶颈,Redis的瓶颈是根据内存和网络带宽。
-
Redis为什么单线程还这么快?
Redis是C语言写的,官方提供的数据为100000+的QPS,这个不比Memecache差。
- 误区1:高性能的服务器一定是多线程的!
- 误区2:多线程(CPU上下文会切换)一定比单线程效率高 !
核心:redis是将所有的数据放到内存中的,所以说使用单线程去操作效率就是最高的 ,多线程(CPU上下文切换是耗时的操作)。对于内存来说,没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个方案是最佳的。