首先还是概念:

你想要用好redis,那么你要清楚它有哪些数据类型
一共5种数据类型:如下(我们项目中常用的也就是String 和 hash类型)
  • String (字符串)
  • Hash (哈希)
  • List (字符串列表)
  • set(字符串集合)
  • SortSet(有序字符串集合)

我这里只讲三种:String 类型,Hash类型和SortSet类型

我们知道redis,是以key-value键值对的形式存储数据的,那么关于key的
定义我这里要强调一下注意点:
1.key的长度不要太长 (不要超过1024个字节),否则会影响查找效率。
但是也不要过短,如设置一个key为a,这样可读性较差。
2.最好有统一的命名规范。

接下来我们来看String类型的常用命令:

  • 赋值 (set)| set age 18
  • 取值 (get)| get age
    keys 获取所有key
  • 先获取key的值再赋值 (getset) getset age 20
  • 删除一个key(del) | del age
  • 自增,加1操作 (incr) | incr a ,这里如果a这个变量没有那么自动创建并赋值为0,加1,如果有是整型则加1,如果为字符类型,则提示错误信息。
  • 递减,减1操作 (decr) | decr b, 这里如果a这个变量没有那么自动创建并赋值为0,减1,成为-1,如果有是整型则-1,如果为字符类型,则提示错误信息。
  • 一次性增加几 (incrby)| incrby a 5 ,如果初始值为0,那么现在为5
  • 一次性减几 (decrby) | decrby a 5 …
  • 在原有key所对应的value值上,拼接字符串。(append)| append a 5 ,如果a=1,那么现在为 15.

看Hash类型的常用命令:

存储string key 和string value 的map类型容器

  • hset 设置值 hset persion age 18 ,hset persion name ‘zhangsan’
  • hmset ----同时存放多个键值对对象,hmset persion age 18 name ‘lisi’
  • hget 取值 hget persion age --------=18
  • hmget 同时获取多个属性值 hmget persion age name
  • hgetall 获取所有的键值对属性值 hgetall persion
  • hdel 删除指定键值对 hdel persion name
  • del 删除整个集合 del persion
  • hincrby 增加值 hincrby persion age 5
  • hexists 判断某个值是否存在 hexists persion name 返回 1
  • hlen 获取集合中有几个属性 hlen persion 返回 2
  • hkeys 获取所有属性名 hkeys persion ,返回 name age
  • hvalues 获取所有属性值 hvalues persion 返回 lisi 18

看Sorted Set类型的常用命令:

sorted set 不允许元素重复,存储string类型的集合。它中每一个元素都会有一个分数与子关联,所有里面的元素是从小到大排序好的。它的访问获取效率是非常高效的。

- zadd  (添加) zadd  mySort   70  zhang   80  li   90 wang,此时,我再增加一个元素  zadd   mySort   100  zhang   它会覆盖原有的分数 80 


 - zscore  (获取对应值的分数) zscore mySort  wang    -----90
 - zrem  (删除)  zrem  mySort  zhang  
 - zrange(显示从小到大的顺序)zrange mySort  0  -1 
   zhang  
   li
   wang
   如果带上withscores 参数   zrange mySort  0  -1  withscores 
   zhang
   70  
   li
   80
   wang
   90
  
 - zrevrange 从大到小排序   zrevrange  mySort 0 -1 withscores
 - zremrangebyscore 按照分数范围进行删除  zremrangebyscore  mySort  80 90

redis的特性:

  • 多数据库
    -默认是16个数据库 ,下标从0开始,到15 ,默认链接的是0号数据库
    选择数据库命令: select 1 就选择了1号数据库
    如果要讲0号数据库中的某个key移动到1号数据库,那么move a 1
  • redis也支持事务
    命令
    multi 相当与开启事务,类比mysql中 begin trancation;
    exec 提交事务,相当于mysql中 commit
    discord 回滚事务,相当于 mysql中的rollback
  • redis的持久化
    redis为什么是高性能的呢,因为redis的数据是保存到内存中的,读取的时候从内存中加载到硬盘,这个过程就是持久化
    方式有俩种:我们可以单独使用其中一种,也可以俩着结合使用
    1.RDB方式
    定义:在相同的时间间隔中,将内存中的数据快照写入到磁盘。
    快照保存的路径就在当前路径下的文件叫dump.rdb
    默认支持的,不需要配置
    在redis中有一个redis.conf 文件 中有如下:
#每900s,也就是,每15分钟如果有一个key发生变化,那么会持久化一次(也就是到内存的一次快照)
save 900 1 
   #每300s,也就是,每5分钟如果有10个key发生变化,那么会持久化一次(也就是到内存的一次快照)         
save 300 10
   #每60s,也就是,每1分钟如果有10000个key发生变化,那么会持久化一次(也就是到内存的一次快照) 
save 60 10000

2.AOF方式
定义:以日志的形式追加 append
此方式需要配置,也在redis.conf 文件中
它里面有一个属性是: appendonly no 需要将其设置为yes ,此后会生成一个名叫appendonly.aof的文件。
它的同步策略有3种分别为:需要选择其中一种,一般为修改一次就同步
appendfsync always 每修改一次就同步
appendfsync everysec 每秒同步一次到硬盘
appendfsync no 不同步