redis学习笔记:

一、初始

1.redis特性

1.1:速度快(使用内存条内存、代码简洁而且是C语言、单线程【避免线程切换和静态资源消耗】)

1.2:持久化

1.3:多种数据结构(String、List、Set、Zset、Hash)

1.4:支持多种编辑语言

1.5:功能丰富(发布订阅、Lua脚本实现自定义功能、支持简单事务、pipeline提高客户端的并发效率)

1.6:简单(代码简洁、使用简单)

1.7:主从复制

1.8:分布式、集群高可用

2.使用场景

2.1:缓存功能

2.2:计数器

2.3:消息队列模式

2.4:排行榜

2.5:社交网络

2.6:实时系统(垃圾邮件)

3.启动方式

3.1:默认直接启动

3.2:带参数启动

3.3:指定配置文件启动

4.常用配置

4.1:端口(port)

4.2:是否设置为守护进程(建设设置为:yes)

4.3:日志文件(logdir)

4.4:文件存放地址(dir)

二、API的理解和使用

1.通用命令

1.1:keys *(罗列所有的keys、不建议使用【可在从节点使用】)、keys h*【罗列h开头的key】

1.2:dbsize(统计存在的key数量、有统计数据机制)

1.3:del key(删除指定的key,可删除多个)

1.4:exists key(判断key是否存在,不存在返回0,存在返回1)

1.5:expire key(设置key过期时间)、ttl(查看还有多长时间过期。-2表示已经过期不存在。-1表示key存在而且没有过期时间)、persist(去掉key的过期时间)

1.6:type key(判断key值的类型。String、List、Hash、Set、Zset、None【不存在key时返回】)

2.数据结构和内部编码

使用空间换时间方式:

string=》(raw、int、embstr)、hash=》(hashtable、ziplist)、list=》(linkedList、ziplist)、set=》(hashtable、intset)、zset=》(skiplist、ziplist)

redisObject存在两种数据(数据类型:type【string、list、hash、set、zset】、编码方式:encoding【raw、int、ziplist、hashtable、linkedlist、hashmap、intset】)

3.单线程

redis属於单线程模式【拒绝长命令(keys、flushall、slow lua script....)】,会出现阻塞现象

3.1:redis单线程快=》纯内存【主要原因】、非阻塞IO、避免线程切换和静态资源消耗

4.字符串(缓存、计数器、分布式锁)

4.1:命令

get key(获取key对应的值)

mget key1 key2 key3...(批量获取值,时间复杂度O(n))

mset key1 value1 key2 value2...(批量设置值,时间复杂度O(1))

set key value(设置key的值为value、不管key是否存在、都设置)

set key value nx(设置key的值为value、key不存在、才设置)

set key value xx(设置key的值为value、key存在、才设置)

incr key(#key自增1、如果key不存在、自增后get(key)=1)

decr key(#key自减1、如果key不存在、自减后get(key)=-1)

incrby key k(#key自增1、如果key不存在、自增后get(key)=k)

decrby key(#key自减k、如果key不存在、自减后get(key)=-k)

getset key newvalue(#set key newvalue并返回旧的value)

append key value(#将value追加到旧的value)

strlen key(返回字符串长度【注意中文】)

incrbyfloat key 4.5(增加key对应的值3.5)

getrange key start end(获取字符串指定下标所有的值)

setrange key index value(设置指定下标所对应值)

 

 

4.1:结构和命令

4.2:快速实战

4.3:内部编码

4.4:查漏补缺

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章