redis基础总结
Redis
数据类型:
String
Hash
String类型:
一个key对应一个value,二进制安全的。
set方法:设置对应值的value
set name value
get方法:获取对应的值
get name
setnx: 设置value,如果name存在则返回0,设置失败;不存在返回1,设置成功
setnx name value
setex:设置值的有效期:时间为妙
setex name 10 yuzy 设置name的有效期为10秒
setrange:从第几个字符开始替换,返回替换之后的字符串长度
set email tiedayzy@163.com 设置email
setrange email 0 yuzy 从第0个字符开始,替换,替换后的结果为yuzyayzy@163.com
mset:一次设置多个值
mset key1 value1 key2 value2 key3 value3 …
msetnx:(nx not exit)一次设置多个值,如果有一个设置不成功,则都不成功
incr:递增,每次加1,只能是数子,不然会报错
incr name
incrby :指定每次递增的数量
incrby name 6/-6 设置增加几个
decr:递减
decrby:指定每次递减的数量
append: 字符串连接方法
strlen:字符串长度
get:
getset:设置新的值,并返回原来的值
getrange:获取子字符串
getrange email 0 4
mget:一次获取多个值
HASH:哈希类型
String类型的field和value的映射表。特别适合存储对象,相对于string类型存储对象,hash需要更少的内存。
Hset :设置hash field 为指定值,如果key不存在,则创建
hset user:001 name yuzy 第一个参数为hash的名称,第二个为hash的字段,紧接着为字段对应的值
Hsetnx:key不存在,则成功,存在则设置失败
hset user:001 pass yuzy 成功
hset user:001 name yu 失败
hmset:同时设置一个hash的多个field
hmset user:001 name yuzy pass yuzy
hdel:删除hash里的某一个field
hdel user:001 pass
hincrby: 对某个field自增
hmset user:002 name yuzy pass yuzy age 20
hincrby user:002 age 6
hexists:查看hash里的某个field是否存在
hexits user:002 age
hlen:返回指定hash的field的数量
hlen user:002
hget:获取hash的对应值
hmget:获取一个hash的过个field
hkeys:获取hash里所有的key
hkeys user:001
hvals:获取hash里面的所有的value
hvals user:002
hgetall:获取hash里的所有的key和value
hgetall user:003
list
是一个链表结构,主要功能是push,pop,获取一个范围的所有值。操作中key理解为链表的名字。
Redis中的list每个子元素都是string类型 的 双向链表。可以从头部和尾部进行添加和删除元素。因此既可以做栈,也可以做 队列
lpush:从list的头部,压入一个元素,取出来之后是一个栈的结构
lpush list1 “hello”
lpush list1 “world”
取出结果为 world hello
rupush:从list的队尾添加元素,先进的先出,所以是一个队列的结构
rpush list2 “hello”
rpush list2 “world”
取出来为hello world
linsert:在某个位置插入
linsert name before “hello” 123 我这里有两个hello,会发现只有在第一次出现hello的前面添加了123
lset:修改指定位置的值
lset name 1 “yuzy”
lrem :在list中删除,N个与value相同的值,N<0的时候,代表从尾部开始删除,N=0代表全部删除
lrem name 3 hello
ltrim:保留指定key的范围内的数据
ltrim name 1 -1
lpop:从list的头部删除一个元素
lpop name
rpop:从list的尾部弹出一个元素
rpop name
rpoplpush:从一个list的尾部弹出一个元素,并压入到另一个list的头部
rpoplpush l1 l2
lindex:返回名称为key的list中index位置的元素
lindex name 2
lrange:取元素
lrange list 0 -1 0表示从头部第0个元素开始,-1表示尾部的最后一个,所以去不全部元素,
sets类型,无序集合
set是集合,是string类型的无序集合。Set是通过hash和table来实现的,添加、删除、查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这个我们可以实现sns中好友的推荐和blog的推荐。
sadd:向set中添加元素,不允许存在相同元素
sadd set1 one
srem:在set中删除指定的元素
srem set1 one
spop:随机返回并删除集合中的一个元素
smembers:查看set中的元素
smembers set1
sdiff:返回两个集合中不同的部分,是指:在第一个集合中存在第二个集合不存在。
Sdiff s1 set
Sdiffstore: 比较两个集合的差集,并将结果存到另一个集合中
Sdiffstore s2 s1 set 将s1与set的交集,取出来,放到s2中
sinter:获取连个集合的交集
Sinter s1 s2
sinterstore:获取两个集合的交集,并存储到另一个集合
Sinter set s1 s2
sunion:获取连个集合的并集
sunionstore:获取两个集合的并集,并存储
smove:将第一个集合中的元素,移动到第二个集合中
Smove s1 s2 one 将s1中的one元素,移动到s2中
scard :返回集合中的元素个数
Scard s1
sismember:判断某个元素是否在集合中
Sismember s1 one
srandmember:随机返回一个元素
Srandmember s1
zset:有序集合类型
sorted set 是set的一个升级版本,在set基础上增加一个顺序属性。此属性在添加,修改时可以修改。可以理解为有两列的MySQL表,一列为order,一列为value。Key理解为zset的名称
zadd:有序集合中添加元素
zadd zset 1 one
zrem : 删除集合中的对应元素
zrem zset one
zrange:返回集合中的元素
zrange zset 0 -1
zincrby: 如果key对应的元素在zset中存在,则元素增加对应数量,如果不存在,则把increment的值作为key对应的元素值
zrank:返回元素在集合中的索引值
zrevrank:返回集合中的元素列表,并按照score从大到小排序,然后获取对应元素的下标
zrevrank zset one
zrevrange:按照score降序排序
zrevrange set 0 -1 withrange
zrangebyscore:返回对应score范围内的元素
zrangebyscore zset 5 8
zcount:返回给定的score区间中,元素的个数
zcount zset 5 9
zcard:返回集合中的元素个数
zcard zset
zremrangebyrank:按下标来排序,然后删除
zremrangebyrank set 0 2
zremrangebyscore:按添加时设置的score来排序,然后删除
redis常用命令
键值的相关命令
keys:返回对应的key
keys *
exists:对应的key是否存在
del:删除对应的数据
exists:判断是否存在
expire:设置键的过期时间
ttl:查看键的过期时间
select:选择数据库
move:将当前数据库的变量,转移到其他数据库
move name 1 将name,转移到数据库1
persist:取消过期时间
randomkey:随机返回key
rename :重命名
rename oldname newname
type:键的数据类型
服务器相关命令
Ping:测试连接是否成功
Echo:打印命令
Select:选择数据库
Quit、exit:退出连接
Dbsize:返回当前数据库中,key的数量
Info:获取服务器的信息
Config get:实时转储收到的请求
Config get * 返回所有的配置信息
Flushdb:删除当前选择数据库中的所有的key
Flushall:删除所有数据库中的所有的键
Redis的高级应用
安全性:
添加密码:
修改redis.conf ;找到requirepass 密码 添加密码
登录可以 直接连接客户端之后,使用 auth 密码来授权
或者打开客户端的时候 redis-cli –a 密码来登录
主从复制:
事务处理:
Redis支持简单的事物,只能保证一个client发起的事务中的命令连续执行,而中间不会插入其他的client命令。
当一个 client 连接发出multi命令的时候,该链接后续的命令不会立即执行,而是先放在队列中,当执行exec命令时,redis会顺序执行队列中的所有命令。
Muliti exec 事务处理
Discard 命令来取消队列。
数据持久化:
两种方式:一个是快照,aof方式。
发布、订阅信息
Publish发布消息:publish Chanel1 test
Subscribe或者psubscribe接收消息:subscribe Chanel1
虚拟内存
Vm相关配置
redis基础总结的更多相关文章
- windows下使用redis,Redis入门使用,Redis基础命令
windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...
- [.net 面向对象程序设计深入](14)Redis——基础
[.net 面向对象程序设计深入](14)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...
- linux redis基础应用 主从服务器配置
Redis基础应用 redis是一个开源的可基于内存可持久化的日志型,key-value数据库redis的存储分为内存存储,磁盘存储和log文件三部分配置文件中有三个参数对其进行配置 优势:和memc ...
- [.net 面向对象程序设计深入](36)Redis——基础
[.net 面向对象程序设计深入](36)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...
- mysql主从复制、redis基础、持久化和主从复制
一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...
- Redis基础用法、高级特性与性能调优以及缓存穿透等分析
一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...
- Redis基础知识补充及持久化、备份介绍(二)--技术流ken
Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...
- Spring-Boot之Redis基础
Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...
- mongodb,Mysql,redis基础教程
数据库基础 1:mongodb基础教程 1:pymongo基础教程 2:Mysql基础教程 3:redis基础教程
- Redis基础知识点面试手册
Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...
随机推荐
- Sprint1(第三天11.16)
Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http://www.cnblogs.com/qu ...
- JAVA GUI
JAVA GUI中的事件处理: 委托事件模型:事件源对象和监听器对象具有绑定关系 一个监听器可以绑定多个事件源 一个事件源也可以绑定多个监听器 监听器有各自监听的事件类型 设置容器的布局管 ...
- 十天精通CSS3学习笔记 part4
CSS3中的变形与动画(下) CSS3 Keyframes介绍 Keyframes 被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主要以"@keyframes"开头,后 ...
- flume介绍与原理(一)
1 .背景 flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一.尤其近几年随着flume的不断被完善以及升级版本 ...
- gulp教程之gulp-livereload
简介: gulp-livereload拯救F5!当监听文件发生变化时,浏览器自动刷新页面.[事实上也不全是完全刷新,例如修改css的时候,不是整个页面刷新,而是将修改的样式植入浏览器,非常方便.]特别 ...
- shell算数运算
((i=$j+$k)) 等价于 i=`expr $j + $k`((i=$j-$k)) 等价于 i=`expr $j -$k`((i=$j*$k)) 等价于 i=`exp ...
- 设置默认python模块源
可以在Linux编辑~/.pip/pip.conf或者在Windows下编辑%HOME%\pip\pip.ini,内容如下:[global]index-url = http://pypi.douban ...
- Xcode真机调试出现The account '***' has no team with ID '***'的解决方案
前段时间,想用真机调试的时候出现 The account '***' has no team with ID '***'的问题, 以前页真机调试过,没有这种情况,于是我登陆开发者中心,进去发现说我的账 ...
- C# Out,Ref 学习总结
C# Out,Ref 学习总结. ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点. 使用ref前必须对变量赋值,out不用. out的函数会清空变量,即使变量已经赋值也不 ...
- 动态拼接linq 使用Expression构造动态linq语句
最近在做动态构造linq语句,从网上找了很多,大多数,都是基于一张表中的某一个字段,这样的结果,从网上可以搜到很多.但如果有外键表,需要动态构造外键表中的字段,那么问题来了,学挖掘机哪家强?哦,不是, ...