redis安装及数据类型简介(string、list、set、sorted_set、hash)
一:简介:
redis国内最大的案例---》新浪微博
memcache:是key-value数据库
数据类型:只支持key value数据
过期策略:支持
持久化:不支持(可以通过三方程序)
主从复制:不支持
虚拟内存:不支持
使用场景:可以保存session,存放单一的数据,更加轻量级,效率更高
redis:是key-value数据库
数据类型:支持五种数据类型
过期策略:支持
持久化:支持
主从复制:支持
虚拟内存:不支持
支持五种数据类型,可以保存购物车的商品
二:编译安装redis 3.0.7
本机编译安装redis 3.0.7:
tar xvf redis-3.0.7.tar.gz
cd redis-3.0.7
make PREFIX=/usr/local/redis install
制作启动脚本:
cp utils/redis_init_script /etc/init.d/redisd
chmod a+x /etc/init.d/redisd
[root@node5 redis-3.0.7]# vim /etc/init.d/redisd #!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem. REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf" case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
配置文件:
[root@node5 redis-3.0.7]# mkdir /etc/redis
[root@node5 redis-3.0.7]# cp redis.conf /etc/redis/6379.conf #对应配置文件/etc/redis/6379.conf
启动测试:
/etc/init.d/redisd start
[root@node5 redis-3.0.7]# /etc/init.d/redisd start
Starting Redis server...
65171:M 21 Mar 07:14:15.712 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 65171
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
这是在前台启动的,如果要想在后台启动,需要改一下配置文件:
daemonize no 改为 daemonize yes
然后在重新启动服务即可
通过salt-master批量安装:
1、编辑redis.sls文件:
/etc/salt/states/init
redis-install:
file.managed: #调用file模块的managed方法
- name: /usr/local/src/redis-3.0.7.tar.gz #客户端的文件路径
- source: salt://init/files/redis-3.0.7.tar.gz #在服务器的路径
- user: root
- group: root
- mode: 755 cmd.run: #执行远程命令,使用cmd的run方法
- name: cd /usr/local/src/ && tar xvf redis-3.0.7.tar.gz && cd redis-3.0.7 && make PREFIX=/usr/local/redis install #编译安装
- unless: test -d /usr/local/redis #如果目录存在就不安装了
- require: #依赖
- file: redis-install #编译之前需要依赖redis-install执行成功 redis-config:
file.managed:
- name: /etc/redis/6379.conf #客户端的配置文件路径
- source: salt://init/files/6379.conf #服务器的配置文件路径
- user: root
- group: root
- mode: 644 redis-service:
file.managed:
- name: /etc/init.d/redis
- source: salt://init/files/redis
- user: root
- group: root
- mode: 755 cmd.run:
- name: chkconfig --add redis && chkconfig redis on #设置服务开机启动
- unless: chkconfig --list | grep redis #如果已经在chkconfig --list列表就不执行上一步骤 service.running: #这是服务启动
- name: redis
- enable: True
- watch: #监控的文件
- file: redis-config - require: 服务启动依赖 redis-install和redis-service
- cmd: redis-install
- cmd: redis-service
2、准备文件:
[root@node5 init]# ls files/redis #启动脚本
files/redis
[root@node5 init]# ls files/6379.conf #配置文件
files/6379.conf
[root@node5 init]# ls files/redis-3.0.7.tar.gz #源码包
files/redis-3.0.7.tar.gz
3、执行命令:
[root@node5 init]# salt "node6.a.com" state.sls init.redis
4、客户端验证:
root@node6 ~]# /etc/init.d/redis start
Starting Redis server...
[root@node6 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 :::6379 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 :::41586 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:46715 *:*
LISTEN 0 128 :::10050 :::*
LISTEN 0 128 *:10050 *:*
salt-master执行命令后后如果报错就根据返回的红色错误信息进行排错
三:redis数据类型格式
3.1、字符串数据格式
SET 设置key,设置的值都是字符串格式string:
192.168.10.205:6379> set key1 value1
OK
192.168.10.205:6379> set key3 value3
OK
192.168.10.205:6379> set key2 value2
OK
GET 获取key的值:
192.168.10.205:6379> get key1
"value1"
192.168.10.205:6379> get key3 #获取指定的key的值
"value3" 不能一次多个key的值:
192.168.10.205:6379> get key1 key2
(error) ERR wrong number of arguments for 'get' command
KEYS 显示所有的key
192.168.10.205:6379> KEYS *
1) "ss"
2) "key2"
3) "list1"
4) "key1"
5) "key4"
EXISTS 判断key是否存在:
192.168.10.205:6379> EXISTS key1
(integer) 1
192.168.10.205:6379> EXISTS key9
(integer) 0 返回1表示存在,0表示不存在
DEL 删除指定的key:
192.168.10.205:6379> del key1 key2 key9
(integer) 2 返回0表示没有指定的key可以删除,返回其他整数表示成功删除的key的数量,没有的key不报错
TYPE 获取key的类型
[root@node5 init]# redis-cli -h 192.168.10.205 -p 6379
192.168.10.205:6379> set key1 value1 #set key
OK
192.168.10.205:6379> get key1 #获取key的值
"value1"
INFO: 当前服务器的状态
SELECT: 更换数据库,redis默认支持16个数据库,默认在数据库0,可以使用sekect 进行更换数据库
192.168.10.205:6379> SELECT 1
OK
192.168.10.205:6379[1]> set key1 value1
OK
192.168.10.205:6379[1]> KEYS *
1) "key1"
清空整个数据库:FLUSHALL
192.168.10.205:6379[1]> FLUSHALL
APPEND:附加值给value
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> APPEND key1 cc
(integer) 8
127.0.0.1:6379> get key1
"value1cc"
INCR:如果key不存在就创建并设置value默认为1:
127.0.0.1:6379> INCR num #如果key不存在就创建并设置默认值为1
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> INCR num #再次执行的值会自增1
(integer) 2
127.0.0.1:6379> get num
"2"
127.0.0.1:6379> get key1
"value1cc"
127.0.0.1:6379> INCR key1 #如果key已经存则报错
(error) ERR value is not an integer or out of range
DECR:value自减1:
127.0.0.1:6379> get num
"5"
127.0.0.1:6379> DECR num
(integer) 4
127.0.0.1:6379> get num
"4"
127.0.0.1:6379> DECR num
(integer) 3
127.0.0.1:6379> get num
"3"
INCRBY :指定自增value的整数值:
127.0.0.1:6379> get num
"13"
127.0.0.1:6379> INCRBY num 7
(integer) 20
127.0.0.1:6379> get num
"20"
127.0.0.1:6379> INCRBY num 10
(integer) 30
127.0.0.1:6379> get num
"30"
DECRBY:指定自检value的值:
127.0.0.1:6379> get num
"41"
127.0.0.1:6379> DECRBY num 10
(integer) 31
127.0.0.1:6379> get num
"31"
127.0.0.1:6379> DECRBY num 10
(integer) 21
127.0.0.1:6379> get num
"21"
INCRBYFLOAT :设置浮点数的value
127.0.0.1:6379> INCRBYFLOAT num1 0.1
"0.1"
127.0.0.1:6379> INCRBYFLOAT num1 0.1
"0.2"
127.0.0.1:6379> INCRBYFLOAT num1 0.1
"0.3"
127.0.0.1:6379> get num1
"0.3"
MSET 和 MGET:批量创建和获取key
127.0.0.1:6379> MSET k1 v2 k2 v2 k3 v3
OK
127.0.0.1:6379> MGET k1 k2 k3
1) "v2"
2) "v2"
3) "v3"
STRLEN:获取key字符串的长度
127.0.0.1:6379> STRLEN key1
(integer) 8
127.0.0.1:6379> STRLEN k1
(integer) 2
127.0.0.1:6379> get key1
"value1cc"
127.0.0.1:6379> get k1
"v2"
3.2、散列数据类型:
HSET:命令用于为哈希表中的字段赋值,如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作,如果字段已经存在于哈希表中,旧值将被覆盖
HGET:获取key:
127.0.0.1:6379> HSET shouji name iphone
(integer) 1
127.0.0.1:6379> HSET shouji color red
(integer) 1
127.0.0.1:6379> HSET shouji price 4888
(integer) 1 127.0.0.1:6379> HGET shouji name
"iphone"
127.0.0.1:6379> HGET shouji color
"red"
127.0.0.1:6379> HGET shouji price
""
HGETALL:获取key的所有值
127.0.0.1:6379> HGETALL shouji
1) "name"
2) "iphone"
3) "color"
4) "red"
5) "price"
6) ""
HMSET、HMGET、HMGETALL:批量创建、批量获取并获取所有的key:
127.0.0.1:6379> HMSET shouji name xiaoji color baise storge 16G #批量创建
OK 127.0.0.1:6379> HMGET shouji name storge #批量获取
1) "xiaoji"
2) "16G" 127.0.0.1:6379> HGETALL shouji #获取所有的key
1) "name"
2) "xiaoji"
3) "color"
4) "baise"
5) "price"
6) ""
7) "name1"
8) "xiaomio"
9) "storge"
10) "16G"
HDEL:删除指定的key
127.0.0.1:6379> HDEL shouji name #删除值的key
(integer) 1
127.0.0.1:6379> HGETALL shouji #再次查看
1) "color"
2) "baise"
3) "price"
4) ""
5) "name1"
6) "xiaomio"
7) "storge"
8) "16G"
3.3 列表数据类型:不同的数据类型的命令是不通用的,如list与string的命令是不能通用的。出了set命令之外
LPUSH与RPUSH:
127.0.0.1:6379> LPUSH list1 a #从左侧添加
(integer) 1
127.0.0.1:6379> LPUSH list1 b
(integer) 2
127.0.0.1:6379> LPUSH list1 c
(integer) 3
127.0.0.1:6379> RPUSH list 1 #从右侧添加
(integer) 1
127.0.0.1:6379> TYPE list1 #查看类型
list
LLEN:获取列表的长度:
127.0.0.1:6379> LLEN list1
(integer) 3
LPOP 与 RPOP:从左侧和右侧弹出列表中的值:
127.0.0.1:6379> LPOP list1
"c"
127.0.0.1:6379> RPOP list1
"a"
LINDEX:获取最后一个元素:
LRANGE :获取指定范围的元素
127.0.0.1:6379> LINDEX list1 -1
"b"
127.0.0.1:6379> LINDEX list1 3
"a" 127.0.0.1:6379> LRANGE list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "b"
3.4、集合数据类型的操作:集合默认是无序的,列表是有序的,有序是只按照添加的循序保持位置
SADD:创建并给集合赋值
192.168.10.205:6379> SADD set1 0 99 1
(integer) 3
192.168.10.205:6379> SADD set1 a b c
(integer) 3
SMEMBERS:获取集合中的所有值
192.168.10.205:6379> SMEMBERS set1
1) ""
2) ""
3) ""
4) "c"
5) "b"
6) "a"
SISMEMBER:判断一个值是不是在集合当中,在返回1,否则返回0
192.168.10.205:6379> SISMEMBER set1 a
(integer) 1
192.168.10.205:6379> SISMEMBER set1 p
(integer) 0
SDIFF:求两个集合的差集:
192.168.10.205:6379> SADD jihe1 1 2 3 a
(integer) 4
192.168.10.205:6379> SADD jihe2 1 2 3 b
(integer) 4
192.168.10.205:6379> SDIFF jihe1 jihe2 #差集,求集合1有而集合2没有的值
1) "a"
192.168.10.205:6379> SDIFF jihe2 jihe1
1) "b"
SINTER:求并集,即在多个集合当中共同包含的值,可以是多个集合
192.168.10.205:6379> SADD jihe3 2 3 c
(integer) 3
192.168.10.205:6379> SINTER jihe1 jihe2 jihe3
1) ""
2) ""
SUNION:求并集,即在每个元素都出现的值只统计一次
192.168.10.205:6379> SUNION jihe1 jihe2 jihe3
1) "c"
2) ""
3) "b"
4) ""
5) "a"
6) ""
3.5 有序队列:保持值的位置固定
192.168.10.205:6379> ZADD youxv 1 b 2 a 3 c #通过设置分数创建有序队列,值会安装自己的分数排列位置
(integer) 3
192.168.10.205:6379> ZSCORE youxv a #获取值的分数
""
192.168.10.205:6379> ZSCORE youxv b
""
ZRANGE:根据值的分数排序获取值
192.168.10.205:6379> ZRANGE youxv 0 3 #0和3为取值的下标范围,可以通过LEN统计,超出值的总数不报错
1) "b"
2) "a"
3) "c"
redis安装及数据类型简介(string、list、set、sorted_set、hash)的更多相关文章
- 14、redis安装及数据类型
14.0.服务器配置: 服务器名称 ip地址 controller-node1 172.16.1.90 14.1.什么是redis: 1.redis的特点: (1)redis是一个开源的使用c语言编写 ...
- JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
1. 学习计划 1.首页轮播图展示 2.Redis服务器搭建 3.向业务逻辑中添加缓存. 4.使用redis做缓存 5.缓存同步. 2. 首页轮播图动态展示 2.1. 功能分析 根据分类id查询内容列 ...
- c#中的数据类型简介(string)
Sting 字符串 引入话题 字符串是一个引用类型,从string数据类型的代码定义中也可以看出它实现了IEnumerable<char>接口和IEnumerable接口,因此字符串可以看 ...
- windows下redis安装及配置
1.简介: redis是一个高性能的key-value数据库:redis能读的速度为11万次/秒,写的速度是8.1万次/秒 redis支持丰富的数据类型:String, List, Hash(map) ...
- Redis进阶实践之四Redis的基本数据类型
一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软件使用的更频繁,适用范围更广呢?就是因为R ...
- redis数据库各种数据类型的增删改查命令
redis的常用数据操作: redis是key-value的数据结构,每条数据都是一个键值对. 键的类型是字符串并且键不能重复. redis最基本数据类型是string 所以下面的操作可以省略引号&q ...
- redis的基本数据类型
一:redis是一个开源的,使用C语言编写,支持网络,可基于内存亦可持久化的日志型,key-value方式存储的nosql数据库.作为缓存服务器,速度效率都很快,和memcache相似 redis支持 ...
- redis中各种数据类型的常用操作方法汇总
在spring中使用jedisTemplate操作,详见https://www.cnblogs.com/EasonJim/p/7803067.html 一.Redis的五大数据类型 1.String( ...
- Redis进阶实践之四Redis的基本数据类型(转载4)
Redis进阶实践之四Redis的基本数据类型 一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软 ...
随机推荐
- [置顶] js综合应用:表格的四则运算
在做调查问卷的过程中,遇到一个表格的统计问题,算是需要些js方面的综合知识,所以记录下来. 在上次完成了基本的求和的基础上,添加了基本的加减乘除四则运算. 基本需求简化后如下: 对应的htm了为: & ...
- Ext JS学习第十三天 Ext基础之 Ext.Element
•Ext.Element提供了181个方法,嗯,还没完,只是在4.1版本中是这样,最新的4.2版本貌似又增加了新方法,可谓是相当丰富给力.那么根据操作类型基本可以分为查询系.DOM操作系.样式操作系. ...
- ie调试控制台
function initConsole() { var console = document.createElement('div'); console.id = 'errorConsole'; d ...
- Oracle存储过程function语法及案例
create or replace function F01_SX03_SUM(statdate varchar2, code varchar2, para varchar2) RETURN numb ...
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等
页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...
- apache基本配置
apache基本配置 apache本地虚拟域名配置
- judge loop in undirected graph
一 深度优先遍历,参考前面DFS(white and gray and black) 二 根据定点以及边数目进行判断 如果m(edge)大于n(vertex),那么肯定存在环 算法如下: 1 删除所有 ...
- uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble 题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量 ...
- UVA 10652 Board Wrapping(凸包)
The small sawmill in Mission, British Columbia, hasdeveloped a brand new way of packaging boards for ...
- JQuery实现表格的相同单元格合并的三种方法
代码: <!DOCTYPE html> <html> <head> <title>merge.html</title> <meta h ...