一、
redis基本知识
-
redis默认有16个数据库,config get databases查看数据库数量
127.0.0.1:6379> config get databases # 查看数据库数量
1) "databases"
2) "16"
- 默认使用的是第
0个
16 个数据库为:DB 0~DB 15,默认使用DB 0 - 可以使用
select进行切换数据库
select n切换到DB n,dbsize可以查看当前数据库的大小,与key数量相关。
127.0.0.1:6379> select 1 # 切换到数据 1
OK
127.0.0.1:6379[1]> dbsize # 查看数据库大小
(integer) 0
127.0.0.1:6379[1]> keys * # 查看数据库中所有的 key
- 清除当前的数据库
flushdb
127.0.0.1:6379> flushdb # 清除当前的数据库
- 清除所有的数据库
flushall
127.0.0.1:6379> flushall # 清除所有的数据库
Redis是单线程的,Redis是基于内存操作的
所以Redis的性能瓶颈不是CPU,而是机器内存和网络带宽。Redis为什么单线程还这么快?QPS达到10W+
误区1:高性能的服务器一定是多线程的?
误区2:多线程(CPU上下文会切换!)一定比单线程效率高!核心:
Redis是将所有的数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!),对于内存系统来说,如果没有上下文切换效率就是最高的,多次读写都是在一个CPU上的,在内存存储数据情况下,单线程就是最佳的方案。
二、五大数据类型
-
Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件 MQ。 - 它支持多种类型的数据结构,如:
1、字符串(strings)
2、散列(hashes)
3、列表(lists)
4、集合(sets)
5、有序集合(sorted sets)
与范围查询,bitmaps,hyperloglogs和 地理空间(geospatial) 索引半径查询。 -
Redis内置了 复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis-key
- 在
redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。
常用命令:
-
exists [key]:判断key是否存在 -
del [key]:删除键值对 -
move [key] [db]:将键值对移动到指定数据库 -
expire [key] [seconds]:设置过期时间 -
ttl [key]:(time to live) 查看当前key剩余时间 -2 代表已经过期 -
type [key]:查看key的类型
type数据返回类型:
-
none(key不存在) string(字符串)list(列表)set(集合)zset(有序集)hash(哈希表)
三、测试
127.0.0.1:6379> keys * # 查看当前数据库所有key
(empty list or set)
(empty array)
127.0.0.1:6379> set name yj # set key
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> exists name # 判断键是否存在
(integer) 1 # 存在
127.0.0.1:6379> exists name1
(integer) 0 # 不存在
127.0.0.1:6379> move name 1 # 将 name 移动到数据库1 中
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name yj
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> get name
"yj"
127.0.0.1:6379> expire name 10 # 设置键值对的过期时间
(integer) 1
127.0.0.1:6379> ttl name # 查看当前 key 的剩余时间
(integer) -2 # -2 已经过期
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> move age # 将 age 移动到数据库1 中
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> select 0 # 切换到数据库 0中
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> select 1 # 切换到数据库 1中
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> del name # 删除键值对
(integer) 1 # 删除个数
127.0.0.1:6379[1]> keys *
1) "age"
127.0.0.1:6379[1]> del age
(integer) 1
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379> type name 查看value的数据类型
string
- 查看更多命令:官方地址
© 著作权归作者所有,转载或内容合作请联系作者
喜欢的朋友记得点赞、收藏、关注哦!!!