阶段一、认识redis
1、什么是redis
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:RemoteDictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
2、redis特点:
快速响应,数据量小
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
3、Redis应用场景:
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
4、端口
mysql端口:3306
redis端口:6379
mongoDB端口:27017
阶段二、认识五种类型
1、string字符串
2、list列表
3、hash哈希
4、set集合
5、sorted sets有序集合
阶段三、五种类型的操作
进入redis
进入:redis-cli --raw
不能进入,就安装:
sudo apt-get update
sudo apt-get install redis-server
1、string字符串
-
可以为整形、浮点型和字符串,统称为元素
# 基本操作# 设置set key value 例:set name 'zcm'# 获取get key 例:get name# key是唯一的,不能用同一个key 不然就会覆盖# 查看过期时间# -1 表示永久 -2 表示不存在ttl key 例: ttl name# 设置过期时间# expire key seconds 例: expire name 20# 设置key的同时,设置过期时间set key value ex seconds 例: set age 18 ex 20或setex key seconds value 例: setex sex 20 'nan'# 追加# 给已有的value,再添加新的值append key value 例: append name love# get name# 设置/获取多个# 设置多个 stringmset key value key value .. 例: mset username 'lucky' password '123'# 获取多个mget key key key ... 例: mget username password# key操作# 查看所有的key 例: keys *# 删除del key 例: del name# 查看key是否存在,存在返回 1,不存在返回 0exists key# 查看key类型type key# 运算set num 1 # 自动识别,字符串里面的 整数# +1incr key 例: incr num# -1decr kye 例: decr num# +整数incrby key increment 例: incrby num 50# -整数decrby key increment 例: decrby num 50
2、list 列表
实现队列,元素不唯一,先入先出原则
# 设置# lpush 左添加 (栈 先进后出)lpush key value # 例: lpush li 1 2 3 4# rpush 右添加 (队列 先进先出)rpush key value # 例: rpush li 1 2 3 4# 查看# lrange key start stop例 查看所有lrange li 0 -1# 获得list的元素个数llen key 例: llen li# 查看位于 lindex 位置上的元素lindex key index 例: lindex li 3# 删除# 删除左边一个lpop key 例:lpop li# 删除右边一个rpop key 例:rpop li# 指定删除rpush my_list a a b b c d e e f# lrem key count value# count > 0 从左往右 删除数量为count的value例:lrem my_list 2 a# count = 0 删除所有的 value例:lrem my_list 0 b# count < 0 从右往左 删除数量为count的value例:lrem my_list -2 e
3、hash哈希
key : (field : value)
是一个string类型的field和value的映射表,特别适合用于存储对象
hash的key必须是唯一的
# 设置# hset key field value 例:user {name:lucky} hest user name lucky# 获取# hget key field 例:hget user name# 删除# hdel key field 例:hdel user name# 设置多个# hmset key field value [field value]例:user{name:lucky,age:18,sex:male}hmset user name lucky age 18 sex male# 获取多个# hmget key field field..例:hmget user name age sex# 获取全部 field value# hgetall key 例:hgetall user# 获取所有的 field# hkeys key 例:hkeys user# 获取所有的 value# hvals key 例:hvals user# 获取 field 的个数# hlen key 例:hlen user# 获取 field 的类型# type key 例:type user
4、set集合
各不相同的元素
# 设置# sadd key value [value] (唯一,无序)例:sadd my_set a w c d w e# 获取# smembers key 例:smembers my_set# 删除# srem 指定删除 srem key member 例:srem my_set c# spop 随机删除 spop key 例:spop my_set# 移动一个集合的值到另一个集合# smove oldkey newkey member 例:smove my_set my_set2 b# 判断集合存在某个值# sismember key value 例:sismember my_set2 b# 交集# sinter key1 key2 .. 例:sinter my_set my_set2# 把 key1 key2 的交集合并到 newkey# sinterstore newkey key1 key2 例:sinterstore new_set my_set my_set2# 并集# sunion key1 key2 .. 例:sunion my_set my_set2# 把 key1 key2 的并集合并到 newkey# sunionstore newkey key1 key2 例:sunionstore new_set2 my_set my_set2# 差集# sdiff key1 key2 例:sdiff my_set my_set2# 把key1 key2 的差集合并到 newkey# sdiffstore newkey key1 key2 例:sdiffstore new_set3 my_set my_set2# 获得集合个数# scard key 例:scard my_set# 随机返回一个# srandmember key 例:srandmember my_set
5、sorted set有序集合
# 设置# zadd key score member (权,权重,顺序)例:zadd my_zset 1 'one'zadd my_zset 2 'two'zadd my_zset 3 'three'zadd my_zset 4 'four'zadd my_zset 5 'five'# 获取# zrange 正序# zrange key start stop (withscores) 例:zrange my_zset 0 -1# zrevrange 倒序# zrevrange key start stop 例:zrevrange my_zset 0 -1# 删除# zrem key member 例:zrem my_zset two# 索引# zrank 正序# zrank key member 例:zrank my_zset three# zrevrank 反序# zrevrank key member 例:zrevank my_zset three# zcard 查看有序集合元素数# zcard key 例:zcard my_zset# zrangebyscore 返回集合中 score 在给定区间的元素# zrange my_zset 0 -1 withscores 返回全部元素# zrangebyscore my_zset 2 3 withscores 返回了 score 在 2~3 区间的元素# zcount 返回集合中 score 在给定区间的数量# zcount key min max 例:zcount my_zset 2 3# zscore 查看score值# zscore key member 例:zscore my_zset one# zremrangebyrank 删除集合中排名在给定区间的元素# zrange my_zset 0 -1 withscores 删除全部元素# zremrangebyrank my_zset 1 3# zremrangebyscore 删除集合中 score 在给定区间的元素# zrange my_zset 0 -1 withscores 删除全部元素# zremrangebyscore my_zset 1 2