博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
05 redis(进阶)
阅读量:4551 次
发布时间:2019-06-08

本文共 4683 字,大约阅读时间需要 15 分钟。

redis

阶段一、认识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

 

转载于:https://www.cnblogs.com/zcmq/p/9275794.html

你可能感兴趣的文章
Resouse of Buddhism
查看>>
Android实用代码七段(三)
查看>>
打造一个壁纸爬虫来爬你的老婆
查看>>
mysql 给用户设置权限
查看>>
K-Means算法总结
查看>>
TrunCateTable 和Delete Table 的区别
查看>>
Mybatis <where>标签
查看>>
updatefile.sh - Linux下代码更新脚本
查看>>
内存泄露
查看>>
关于js单线程的解释
查看>>
后台计时
查看>>
android Toast,Intent,响应选项,上下文菜单
查看>>
jvmstat监控jvm内存
查看>>
日常错误
查看>>
设计模式<5>------代理模式(Proxy Pattern)------结构式模式
查看>>
Jersey 2.x 基于 Servlet 的服务器端应用
查看>>
Confluence 6 设置公共访问备注
查看>>
Confluence 6 在数据源连接中启用校验查询
查看>>
【2021】小球走过的路程
查看>>
【Uva 1252】Twenty Questions
查看>>