zoukankan      html  css  js  c++  java
  • redis常用

    三、安装启动
    1、安装软件
    (1)下载软件,并上传到linux的服务器Redis的官方下载站是http://redis.io/download 
    (2)解压软件:
    (3)进入解压的目录
    (4)无需配置,直接编译 直接执行:make
    (5)执行安装,
    	注意:在安装时,指定安装目录make PREFIX=/usr/local/redis install
    	安装完成后,会在redis的 安装目录下面创建一个bin目录,该目录里面有5个文件。
    
    	redis-benchmark命令性能测试命令
    	redis-check-aof和redis-check-dump是日志检测工具
    	redis-server是服务器端启动的命令。
    	redis-cli是客户端连接服务器的命令。
    (6)复制配置文件从 redis的解压目录里面把redis.conf配置文件复制到redis的安装目录下面。
    2、启动
    (1)使用vim打开配置文件redis.conf,修改如下参数:
    (2)启动redis服务
    	语法:命令  配置文件
    	redis-server(路径)   redis.conf(路径)
    	注意:此处命令与配置文件,可以写相对路径或绝对路径。
    	比如使用绝对路径写法:  /usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf
    	查看是否启动成功:启动成功后,默认的端口是6379
    	netstat –tunpl | grep 6379
    (3)客户端连接redis服务
    	语法: 连接命令   -h  主机ip  -p端口号
    	如果是连接到本地,则直接输入连接命令即可。
    	redis-cli是客户端连接服务器的命令
    (4)关闭redis的服务
    	停止Redis实例 
    	我们可以使用/usr/local/redis/bin/redis-cli  shutdown
    	也可以使用pkill redis-server
    	killall redis-server
    
    四、数据类型讲解
    1、字符串(string)
    	string是redis最基本的类型
    	redis的string可以包含任何数据。包括jpg图片或者序列化的对象。
    	单个value值最大上限是1G字节, 如果只用string类型,redis就可以被看作加上持久化特性(服务器重启之后,数据不丢失)的memcache
    (1)set
    	设置键,值 
    	语法:set  键名称  值 
    	例如:我们添加一个name=“xiaoqian”的键值对。 
    	注意:重新设置则直接覆盖。
    (2)get
    	获取key对应的string值,如果key不存在返回 nil,
    	语法:get 键值
    (3)incr 
    	对key的值做加加操作,并返回新的值,每执行一次值加1,值类型要是数据类型。
    	语法:incr  key
    (4)incrby
    	执行加法的命令,可以指定相加的值,
    
    2、hash
    	hash可以用来存储对应的mysql中一行的数据,类似于关联数组。
    (1)hset 
    	设置哈希里面的field和vlaue的值。
    	语法:
    	hset  哈希的名称(键名称)  field   value
    (2)hget 
    	获取哈希里面的field的值
    	语法:hget 哈希的名称(键名称) 指定的field
    	注意:user:id:1  名称里面的:符号,就表示一个普通符号,没有任何含义。
    (3)hmset 
    	一次性设置多个field和value
    	语法: hmset  哈希的名称   field1  value1  field2  value2……
    (4)hmget 
    	一次性获取 多个field的value
    	语法:hmget  哈希的名称   field1  field2…….
    (5)hgetall 
    	获取指定哈希中所有的field和value
    	语法:
    	hgetall  哈希的名称
    
    3、链表(list)
    	list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。
    	这使得list既可以用作栈,也可以用作队列。
    	上进上出 :栈  ,特点:数据 先进后出
    	下进上出 :队列,特点:数据 先进先出
    (1)lpush 
    	从链表的头部添加元素
    	语法: lpush  链表的名称(键的名称) 元素
    (2)lrange 
    	获取链表里面的元素
    	语法:
    	lragne 链表的名称  开始下标   结束下标
    	注意:如果开始下标是0结束下标是-1则是返回链表中所有的元素。
    	注意:链表里面的元素是序号的(从0开始数),类似于索引数组。
    (3)rpush 
    	从链表的尾部添加元素
    	语法: rpush  链表的名称(键的名称) 元素
    (4)ltrim 
    	保留指定范围的元素
    	语法:ltrim 链表的名称   开始下标    结束下标
    (5)lpop 
    	从链表的头部删除一个元素,返回删除的元素
    	语法:lpop  链表的名称
    
    比如如下案例:一个网站中,想要获取最新登录的10个用户。
    使用传统的方法解决,查询用户表,根据登录时间排序,截取前10位。
    类似于如下sql语句
    select * from  user  order by   login_time  desc  limit   10;
    以上sql语句,如果用户数量庞大,则执行效率比较低,可以把登录的用户存储到redis的链表里面,
    如果通过list链表实现以上功能,可以在list链表中只保留最新的10个数据,每进来一个新数据就删除一个旧数据。每次就可以从链表中直接获得需要的数据。极大节省各方面资源消耗
    
    4、集合(set)
    	redis的set是string类型的无序集合。
    	set元素最大可以包含(2的32次方-1)(整型最大值)个元素。
    	关于set集合类型除了基本的添加、删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。
    	通过这些操作可以很容易的实现sns中的好友推荐功能。
    	sina公司的好友关注关系就大量使用了set集合类型。
    	注意:每个集合中的各个元素不能重复。
    	该类型应用场合:qq好友推荐。
    
    	tom朋友圈(与某某是好友):mary  jack  xiaoming  wang5  wang6
    	linken朋友圈(与某某是好友):yuehan  daxiong  luce  wang5  wang6
    
    (1)sadd 
    	向集合中添加元素
    	语法:
    	sadd  集合名(键名) 元素名称
    (2)smembers 
    	获取集合中的元素
    	语法:
    	smembers 集合名
    (3)sdiff 
    	获取集合中的差集(在集合1中存在,不在集合2中存在的元素)
    	语法:sdiff 集合1  集合2
    (2)sinter
    	获取交集(在两个集合中都存在的元素)
    	语法:sinter 集合1  集合2
    (3)sunion 
    	求并集(两个集合合并后,去掉重复的元素)
    	语法:sunion  集合1  集合2
    (4)scard
    	获取集合中元素的个数
    	语法:scard 集合名称
    
    5、(有序集合)zset
    	sorted set是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。操作中的key理解为zset的名字。
    (1)zadd 
    	向有序集合中添加元素。如果该元素存在,则更新其顺序。
    	语法:zadd  集合名  序号  内容
    (2)zrange
    	(把集合排序后,返回名次[start,stop]的元素默认是升续排列 Withscores 是把score也打印出来)
    	按序号升序获取有序集合中的内容,
    	语法:zrange 集合名称 开始下标  结束下标
    (3)zrevrange 
    	按序号降序获取有序集合中的内容。
    	语法:zrevrange 集合名称 开始下标(索引) 结束下标(索引)
    
    
    五、Redis常用命令
    redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在linux终端使用。 
    1、键值相关的命令 
    2、服务器相关命令
    (1)keys
    	返回当前数据库里面的键,可以使用通配符,* 表示:任意多个,?任意一个字符。
     (2)exists
    	判断一个键是否存在。
    	语法:exists  键名称
    (3)del
    	删除指定的键
    	语法: del  键名称
    (4)expire
    	设置键的有效期
    	语法:expire  key  有效期(秒数)
    (5)ttl 
    	返回一个键剩余的过期时间.
    (6)type
    	返回数据类型
    	语法: type  key
    (7)select
    	选择数据库,在redis里面默认有0-15号数据库,默认是0号数据库,
    	可以通过redis.conf配置文件进行设置。
    	切换数据库语法:select  数据库的编号
    (8)dbsize 
    	返回当前数据库里面键的个数
    (9)flushdb 
    	清空当前数据库里面所有的键,(慎重使用)
    (10)flushall 
    	清空所有数据库里面的所有的键,(慎重使用)
    
    六、安全认证
    	设置客户端连接后进行任何其他操作前需要使用的密码。 
    	方法:打开redis的配置文件(redis.conf)
    (1)#requirepass   设置的密码
    	注意:设置的密码是明文的,因此要对redis.conf配置文件,进行严格的授权。
    (2)重启redis服务,让密码生效。
    	关闭redis服务   pkill redis-server
    	启动	  /usr/local/redis/bin/redis-server   /usr/local/redis/redis.conf
    (3)客户端验证方式:
    	注意:如果没有通过验证,则无法操作:
    
    方式一:
    	通过客户端登录到服务器时,添加  -a 选项。
    	语法:redis-cli    –a 密码
    方式二;
    	登录到服务器端后,使用auth命令来完成验证。语法auth  密码。 
    
  • 相关阅读:
    Git工作中用法(Gitlab)
    面试记录,不定时更新中。。。
    webservice 技术改进
    HTTP详解
    Git学习05 --分支管理02
    Git学习04 --分支管理
    链表判环问题
    k-选取问题
    图片与字符串(base64编码)的转化
    二叉堆与堆排序的简单实现
  • 原文地址:https://www.cnblogs.com/aten/p/9436214.html
Copyright © 2011-2022 走看看