zoukankan      html  css  js  c++  java
  • redis基本操作

    行式数据库和列式数据库
    1. OLAP分析型数据库 (列式数据库, 数据分析)
       > 计算均值, 比较大小, 求最大最小...等分析数据的时候速度快, 是将一个属性的数据存储到一起.
       > 只有取出所有的属性值之后才得到某一个对象的整体信息
    2. OLTP事务型数据库(行式数据库, 增删改查)
       > 将一个个对象作为存储的单位, 在取出一个对象的所有信息的时候速度快. 只有当去除所有的对象的属性值之后才能对数据进行求均值, 比大小等等	
    

    Redis-key基本命令

    注 : 有时候命令没有提示, 可能是因为少输入了一个s

    cd /usr/local/bin				#进入到redis软件的安装目录
    redis-cli -p 6379				#开启,进入到127.0.0.1.6379>
    
    set key_1 xiong
    set key_2 22
    
    get key_1
    
    expire key_1 10					#设置过期时间,自动过期,cookie,session登录,缓存
    ttl key_1						#查看剩余时间
    
    move key_1 xiong				#移除当前的key,一般不这么用
    
    keys *							#查看所有的key
    
    exists key_1					#查看当前的key是否存在
    
    type key_1						#查看类型
    
    flushdb							#清空数据库
    

    String类型

    append key_1 helloworld			#向key_1后面追加"helloworld"
    								#如果当前key不存在,就相当于set key_1
    strlen							#获取字符串的长度
    
    incr key_2						#加1
    decr key_2						#减1
    incrby key_2 10					#设置每次增加的步长为10
    
    getrange key_1 0 3				#获取0-3的字符
    getrange key_1 0 -1				#获取全部的字符串
    setrange key_1 1 xxx			#用xxx替换字符串中的字符,从1号位置开始,替换数目和xxx相等
    
    #msetnx操作是原子性的,要么一起成功,要么一起失败,但是 redis中的事务不是原子性的,可以有些成功有些失败
    
    mset k1 v1 k2 v2 k3 v3 			#批量设置,K1 V1
    mget							#获取多个值
    msetnx K1 V1 K4 V4				#此时由于K1已经存在,会导致操作失败,返回0
    
    
    #设置对象
    set user:1{name:zhangsan,age:22}
    mset user:1:name zhangsan user:1:age 12	#这里的key_1为user:1:name,表示第一个user的name属性
    #获取对象
    mget user:1:name user:1:age
    
    #组合命令
    getset db redis    			#第一次由于db不存在,所以输出nil,同时这个方法在输出后还会对db进行设置
    getset db MongDB			#由于上一次已经设置db为redis,所以会输出redis,同时设置为MongDB
    
    127.0.0.1:6379> setnx mykey redis		#如果mykey的值不存在,则设置为redis
    (integer) 1
    127.0.0.1:6379> setnx mykey MongDB		#如果mykey的值不存在,则设置为MongDB,如果存在则设置失败
    (integer) 0
    127.0.0.1:6379> SETEX key2 5 hello		#设置key2的值为hello,5秒后过期
    OK
    127.0.0.1:6379> ttl key2
    (integer) 1
    
    

    List类型

    #可以把List当成栈,队列,阻塞队列,实际上是一个链表
    
    #所有的list命令都是以l开头的
    lpush key_1 one					#向key为key_1的队列左边加上一个值one
    lpop  key_1						#从左边pop出栈
    rpop  key_1						#从右边pop出栈
    lindex key_1 2					#通过下标获取值,相当于list[2],下标从0开始,和编程语言保持一致
    llen key_1						#获取列表的长度
    lrem key_1 2 xiong 				#在key_1中移除掉2个xiong,精确匹配
    lrange mylist 0 -1				#相当于遍历mylist
    ltrim mylist 0 3 				#相当于截断mylist,会造成mylist的改变
    rpoplpush mylist myotherlist    #=rpop+lpush,从右边pop出列表中的第一个元素,并将它放入到新的列表中
    								#如果myotherlist不存在,会直接新建myotherlist
    
    linsert							#向列表中插入一个值
    
    
    ex1:
    127.0.0.1:6379> lpush key_1 one 1 "xiong" 
    (integer) 3
    127.0.0.1:6379> lrange key_1 0 -1
    1) "xiong"
    2) "1"
    3) "one"
    127.0.0.1:6379> lpop key_1
    "xiong"
    127.0.0.1:6379> rpop key_1
    "one"
    127.0.0.1:6379> lrange key_1 0 -1
    1) "1"
    
    ex2:
    127.0.0.1:6379> lpush key_1 5 7 8 4 5 one right king xiong kuang sun xu
    (integer) 13
    127.0.0.1:6379> lrange key_1 0 -1
     1) "xu"
     2) "sun"
     3) "kuang"
     4) "xiong"
     5) "king"
     6) "right"
     7) "one"
     8) "5"
     9) "4"
    10) "8"
    11) "7"
    12) "5"
    13) "1"
    127.0.0.1:6379> lindex key_1 2
    "kuang"
    127.0.0.1:6379> lindex key xiong
    (nil)
    
    
    ex3:
    127.0.0.1:6379> lrange mylist 0 -1
    1) "hello"
    2) "hello1"
    3) "hello1"
    4) "hello2"
    5) "hello3"
    6) "hello3"
    127.0.0.1:6379> ltrim mylist 00 3			#这里写00会造成错误
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> ltrim mylist 0 3 
    OK
    127.0.0.1:6379> lrange mylist 0 -1
    1) "hello"
    2) "hello1"
    3) "hello1"
    4) "hello2"
    

    set类型

    #命令以s开头
    #set里面没有重复的数据,属于无序不重复集合
    
    #用途 : 共同关注,共同爱好,推荐好友...
    #比如查看共同关注 : 将A关注的人放到一个集合中,B关注的一个人放到一个集合中,二者求交集
    
    sadd myset hello					#向myset中添加元素hello
    smembers	myset					#查看myset中的元素
    scard myset							#获取myset集合中的元素个数
    srem myset hello					#移除myset中的hello
    sismember myset hello				#判断某一个值是否在myset中
    srandmember myset 2					#随机获取myset中的2个元素
    spop myset							#随机删除掉一个元素
    smove myset myset2 hello			#将myset中的hello移到myset2中
    
    sdiff myset myset2					#差集myset-myset2
    sinter myset myset2					#交集
    sunion myset myset2					#并集
    
    

    Zest有序集合

    #排行榜,分数成绩单排名
    #带权重的,例如重要消息等级设置为2,普通消息等级设置为1
    
    
    zadd myset 1 one 0 two 4 three						#添加多个值,并按照给定的序号进行排序
    (integer) 3
    zrange myset 0 -1									#从这里可以看出,序号是从1开始,连续递增的
    1) "two"
    2) "one"
    3) "three"
    
    zrem	#移除
    
    
    zadd salary 2500 zhangsan
    (integer) 1
    zadd salary 5000 lisi
    (integer) 1
    zadd salary 100 xiong
    (integer) 1
    keys *
    1) "salary"
    2) "myset"
    zrange salary 0 -1
    1) "xiong"
    2) "zhangsan"
    3) "lisi"
    
    zrangebyscore salary -inf inf						#实现排序,-inf到inf表示全排序
    1) "xiong"											#可以指定范围 例如 -1000 200
    2) "zhangsan"
    3) "lisi"
    zrangebyscore salary -1000 100
    1) "xiong"
    zrangebyscore salary 0 100 withscores				#同时会将具体的值打印出来
    1) "xiong"
    2) "100"
    zrevrange salary 0 -1								#从大到小排序
    zcount myset 1 4									#获取myset中[1,4]的变量的个数
    

    hash类型

    #hash更适合对象的存储;
    #hash用来存储容易发生变更的数据,尤其是用户信息,一条field对应一个属性,例如username password age...
    
    hset myhash field1 xiong					#设置属性和值,相当于key和value
    hget myhash field1							#获取属性对应的值
    hmset myhash field1 kuang field2 xiong		#设置多个属性值,并且会将同名属性的值给覆盖掉
    hmget myhash field1 field2
    
    hdel muhash field1							#删除myhash中的field1属性和对应的值
    hlen myhash									#获取myhash中的长度
    hexists myhash field3						#判断myhash中field3是否存在
    hgetall myhash								#获取所有属性和它们对应的值
    hkeys myhash								#获取所有的key
    hvals myhash								#获取所有的value
    
    myhash field3 5								
    hincrby myhash field3 2						#给field3对应的值加2,此时field3对应的值为7
    hdecrby myhash field3 1						#相当于+(-1)=-1
    hsetnx myset field4 hello					#当field4不存在才进行设置,否则失败
    
  • 相关阅读:
    css-box-shadowing
    css- :before :after
    css: line-height 与box-sizing
    金蝶数据库后台追踪
    钉钉审批开发,空白内容
    asp.net c#语言实现钉钉鉴权验证
    钉钉事件回调c#测试完成
    钉钉C#发起审批实例demo
    asp.net c#语言实现钉钉鉴权验证
    图片码
  • 原文地址:https://www.cnblogs.com/yimeisuren/p/12640025.html
Copyright © 2011-2022 走看看