博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis基本操作
阅读量:4357 次
发布时间:2019-06-07

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

redis是以键值对存储的,和python中的字典一样

{  key_1: value_1   key_2: value_2}

 然后这个 value部分可以是不同的数据类型

{    name: heboan,   #字符串    age: 18,    #整数,可以使用自增功能    my_books: ['java', 'python', 'php', 'python'],  #列表    my_schools: {
'qinghua', 'beida', 'fudan'}, #集合,没有重复的元素 body: {
'weight': '60kg', 'height': '170cm'} #哈希,也是键值对}

 

Redis的字符串以及过期时间操作

> set username heboan   # 设置值OK> get username   #获取值"heboan"
> set sayhi 'hello world'OK> get sayhi"hello world"
值之间有空格,需要用引号引起来
> del username(integer) 1> get username(nil)127.0.
删除key
#方法1> set username heboan EX 10  #10秒后过期OK#方法2> setex username 10 heboanOK#方法3> set username heboanOK> expire username 10(integer) 1
设置过期时间

查看当前redis的所有key

> keys *

 

redis的列表操作

> lpush books python php(integer) 2> lpush books java(integer) 3> lrange books 0 -1  #查看此列表所有元素1) "java"2) "php"3) "python"#["java", "php", "pyton"]
从列表左边插入
> rpush books c++ golang(integer) 5> lrange books 0 -11) "java"2) "php"3) "python"4) "c++"5) "golang"#["java", "php", "python", "c++", "golang"]
从列表右边插入
#移除并返回左边的第一个元素> lpop books"java"#移除并返回右边的第一个元素> rpop books"golang"
移除列表中的元素
127.0.0.1:6379> lrange books 0 -11) "php"2) "python"3) "c++"> llen books(integer) 3
返回元素的个数
> lindex books 0"php"> lindex books 1"python"> lindex books 2"c++"> lindex books 3 #超过返回空(nil)
指定返回第几个元素
> lrange books 0 -11) "php"2) "php"3) "golang"4) "python"5) "c++"6) "python"7) "php"8) "java"#count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count#删除2个php> lrem books 2 php(integer) 2> lrange books 0 -11) "golang"2) "python"3) "c++"4) "python"5) "php"6) "java"#count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值#删除1个python> lrem books -1 python(integer) 1> lrange books 0 -11) "golang"2) "python"3) "c++"4) "php"5) "java"#count = 0:移除表中所有与value 相等的值
删除指定的元素

 

redis的集合操作

集合和列表相比:1、集合不拥有重复的元素     2、集合是无序的,没有位置关系

> sadd school_1 qinghua beida(integer) 2
添加元素
> smembers school_11) "beida"2) "qinghua"
查看元素
> sadd school_1 fudan(integer) 1 smembers school_11) "beida"2) "fudan"3) "qinghua"> srem school_1 fudan   #删除元素fudan(integer) 1> smembers school_11) "beida"2) "qinghua"
删除元素
> smembers school_11) "beida"2) "qinghua"> scard school_1(integer) 2
查看集合元素的个数
#交集就是取出集合之间共同拥有的元素> smembers school_11) "beida"2) "qinghua"> smembers school_21) "fudan"2) "qinghua"3) "wangyi"> sinter school_1 school_21) "qinghua"
获取多个集合的交集
#并集就是取出集合的所有元素,重复的元素只保留1个,因为集合不能有重复的元素> smembers school_11) "beida"2) "qinghua"> smembers school_21) "fudan"2) "qinghua"> sunion schoo_1 school_21) "fudan"2) "wangyi"3) "qinghua"
获取多个集合的并集
> smembers school_11) "beida"2) "qinghua"> smembers school_21) "fudan"2) "qinghua"3) "wangyi"> sdiff school_1 school2  #把school_2中不含有schoo_1中的元素去掉1) "beida"2) "qinghua"> sdiff school_2 school1 #把school_1中不含有schoo_2中的元素去掉1) "fudan"2) "wangyi"3) "qinghua"
获取多个集合的差集

 

redis的哈希操作

> hset person name heboan(integer) 1> hset person age 18(integer) 1
添加新值
> hget person name"heboan"> hget person age"18"
获取哈希中field对应的值
#删除指定filed> hdel person name(integer) 1> hget person name(nil)#删除多个 field> hdel person name age(integer) 2
删除field
> hset person name heboan(integer) 1> hset person age 18(integer) 1> hset person gender male(integer) 1> hkeys person1) "name"2) "age"3) "gender"
获取某个哈希中所有的field
> hvals person1) "heboan"2) "18"3) "male"
获取某个哈希中所有的值
> hexists person name  #person中存在name(integer) 1> hexists person money  #不存在monery(integer) 0
判断哈希中是否存在某个field
> hlen person(integer) 3
获取某个哈希中键值对的个数

 

redis的事务操作

redis事务可以一次执行多个命令,事务具有以下特征:

隔离操作:事务中的所有命令都会序列化,按顺序执行,不会被其他命令打扰

原子操作:事务中的命令要么全部被执行,要么全部都不执行

开启一个事务

multi

以后执行的所有命令,都在这个事务中执行

执行事务

exec

会将multi和exec中的操作一并提交

一旦事务中执行的命令发生错误或者异常,整个事务都不会执行

取消事务,如果中途想取消事务可以使用命令discard

 监视一个key或者多个key ,如果在事务执行之前,被监视的key被其他命令所改动,那么事务将被打断

取消所有key的监视

> unwatch

 

发布订阅操作

 

转载于:https://www.cnblogs.com/sellsa/p/9420385.html

你可能感兴趣的文章
纤程与Quasar
查看>>
MySQL的一个麻烦事
查看>>
Uri、URL和URN三者的区别
查看>>
数据字典的转换
查看>>
二维数组按照指定的字段排序的函数
查看>>
在IAR下通过Jlink将程序直接下载到Flash指定地址
查看>>
POJ2560-雀斑(Freckles)【图论,并查集,最小生成树,KURUSKAL】
查看>>
[Angular] Tree shakable provider
查看>>
[Vue + TS] Use Dependency Injection in Vue Using @Inject and @Provide Decorators with TypeScript
查看>>
[Angular 2] Select From Multiple Nested Angular 2 Elements
查看>>
C# 中的委托和事件[转帖]
查看>>
图的遍历(bfs+dfs)模板
查看>>
angular service 进行组件通信
查看>>
linux安装Mac的默认Monaco字体
查看>>
java语言的特点
查看>>
关于动态添加iview admin路由以及刷新侧边栏
查看>>
ApplicationInsights的探测器尝鲜
查看>>
java 解析Json格式数据
查看>>
unix中的线程池技术详解
查看>>
CSS简介
查看>>