Redis 基础知识

1,Redis 概念

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps

2,Redis 单线程好处

代码更清晰,处理逻辑更简单
不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
不存在多进程或者多线程导致的切换而消耗CPU
所以redis线程是安全的

3,redis 的五种基本数据类型

String(字符串):String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int

127.0.0.1:6379> set name 'chris'
OK
127.0.0.1:6379> set age 20
OK

取值: get name
get age

List(列表)

 

127.0.0.1:6379> lpush dd dd
(integer) 1
127.0.0.1:6379> lpush dd  aa
(integer) 2
127.0.0.1:6379> lpush dd cc
(integer) 3
127.0.0.1:6379> lpush dd ee


127.0.0.1:6379> LINDEX dd 0 取下标为0的元素
"ee"

取值范围 0-4

127.0.0.1:6379> lrange dd 0 4
1) "ee"
2) "cc"
3) "aa"
4) "dd"


 

Hash(字典)

Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObjectencodingzipmap,当成员数量增大时会自动转成真正的HashMap,此时encodinght

 

HMSET hashkey name "chris" description "handsome men" likes 27

取某个字段的值:

 HGET hashkey name

 

Set(集合)

 

RedisSetstring类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

 

127.0.0.1:6379> SADD runoobkey redis
(integer) 1
127.0.0.1:6379> SADD runoobkey chris

取值:返回所有的元素

127.0.0.1:6379> SMEMBERS runoobkey
1) "redis"
2) "chris"

 

 

 

 

Sorted Set(有序集合)

 Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

 

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

 

有序集合的成员是唯一的,但分数(score)却可以重复。

 

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

 

127.0.0.1:6379> ZADD sortset  1 redis
(integer) 1
127.0.0.1:6379> ZADD sortset  2 redis
(integer) 0
127.0.0.1:6379> ZADD sortset  3 redis
(integer) 0
127.0.0.1:6379> ZADD sortset  1 mongo
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> ZADD sortset  6 mongddo
(integer) 1

 

 

 

 

 

posted @ 2019-08-02 20:11  Chris,Cai  阅读(182)  评论(0编辑  收藏  举报