Redis学习笔记

原创 2018年02月03日 13:06:45
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势
  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?
  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。


Window 下安装
下载到的Redis支持32bit和64bit。根据自己实际情况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reids
打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf 。
如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
redis安装
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
设置键值对 set myKey abc
取出键值对 get myKey


Linux安装
1.下载并安装:
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
2.编译并安装
$ cd redis-2.8.17/src
$ make PREFIX=~/redis/redis install
3.在解压后的目录拷贝redis.conf文件到安装目录下
$ cd redis-2.8.17
$ cp redis.conf ~/redis/redis6379
3-1.redis前端程序启动
$ cd ~/redis/redis6379/bin
$ ./redis-server
3-2.修改redis.conf文件中 ’daemonize no‘ 修改为 'daemonize yes'
3-3.redis后端程序启动
./redis-server ./redis.conf
4.查看redis启动状态
$ ps aux|grep redis
5.查看 redis 是否启动?
$ ./redis-cli
redis 127.0.0.1:6379> ping
PONG

./redis-cli -p 6379 //指点链接redis
./redis-cli -h 192.168.1.107 -p 7111 //链接指定的redis

Redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
key定义的注意:1.不要超过1024个字节

String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB
#相关命令
set name imooc //设值
get name //取值
incr num(key) //递增
incrby num 5 //递增 5
decr num(key) //递减
decrby num 4 //递减4
append num 7 //在后面追加7

List(字符串列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)
ArrayList使用数组方式
LinkedList使用双向链表方式
redis.net.cn”是List列表名称,列表最多可存储 23^2 - 1 元素 (4294967295, 每个列表可存储40多亿)
#相关命令
//两端添加
lpush mylist(key) a b c //添加左侧元素
rpush mylist 1 2 3 //添加右侧元素
//查看列表
lrange mylist 0(开始位置) 5(结束位置)
lrange mylist 0 -2(倒数第二个)
//两端弹出
lpop mylist //弹出后list中没有该元素(左侧)
rpop mylist //右侧弹出
//获取元素个数
llen mylist
//把‘x’插入到mylist前面,有则插入
lpushx mylist x //左侧
rpushx mylist2 y //右侧
//lrem mylist 2 3 //从头到

zset(sorted set : 有序字符串集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
#相关命令
#添加元素
zadd mysort 70(分数) zs 80 ls 90 ww
zadd mysort 100 zs //会把‘zs’中的分数给替换为‘100’
#获得元素
zcard mysort //获取集合中成员数量
(注意:相同元素的不能添加)
zscore mysort zs //获取元素分数
(注意:添加相同元素时,元素不能添加,分数会覆盖)
#删除元素
zrem mysort ls ww //删除‘ls’和‘ww’
zremrangebyrank mysort 0 4 //根据范围(排序)删除元素
zremrangebyscore mysort 80 100 //根据范围(分数)删除元素
#范围查询
zrange mysort 0 -1 //从第一个元素到最后一个元素查询(正序)
zrange mysort 0 -1 withscores //元素查询时,可以获取它的分数
zrangebyscore mysort 0 100 withscores //根据分数范围查询
zrevrange mysort 0 -1 withscores //元素查询(反序)
#扩展命令
zrangebyscore mysort 0 100 withscores limit 0 2 //根据分数范围查询,分页查询 页大小为2,页码是1


zincrby mysort 3 ls //给指定的元素分数添加‘3’
zcount mysort 80 90 //查看80-90分的元素的个数

Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
使用了 Redis HMSET, HEGTALL 命令,user:1 为键值。每个 hash 可以存储 23^2 - 1 键值对(40多亿)
#相关命令
hset myhash(key) username(属性) jack(字段名) //设单个属性值
hset myhash age 18


hget myhash username //获取单个属性值
hmset myhash2 username rose age 21 //设值多个属性值
hmget myhash username age //获取多个属性值


hgetall myhash //获取key中所有属性值
hdel myhash2 username age //删除多个字段
del myhash2 //删除整个hash
hincrby myhash age 5 //hash中增加数字
hexists myhash username //判断myhash中的username是否存在
hlen myhash //获取属性数量
hkeys myhash //获取属性中所有的名称


hvals myhash //获取属性中的值



Set(字符串集合)
Redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
Set集合中不允许出现重复元素
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误。
sadd key member
注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
#相关命令
#添加/删除元素
sadd myset a b c //添加元素(添加过后不能再添加相同的值)



srem myset a b //删除元素
#获取集合中的元素
smembers myset //查看set集合中的元素
sismember myset a //判断集合中是否存在'a'
#集合中的差集运算
sadd mya1 a b c
sadd myb1 a c 1 2
sdiff mya1 myb1


#集合中的交集运算
sadd mya2 a b c
sadd myb2 a c 1 2
sinter mya2 myb2


#集合中的并集运算
sadd mya3 a b c
sadd myb3 a c 1 2
sunion mya3 myb3

#扩展命令
scard myset //得到集合中的元素数量
srandmember myset //随机获取集合中的元素


sdiffstore my1 mya1 myb1 //把mya1与myb1相差的值放到my1中


sinterstore my2 mya2 myb2 //把mya2与myb2的交集放到my2


sunionstore my3 mya3 myb3 //把mya3yumyb3的并集放到my3


smembers my1

./redis-cli -h 192.168.0.66 -p 6379 //连接redis服务器
clear //清楚控制台

#通用命令
keys * //查询所有的key
keys my? //查询以‘my’开头的key
del my1 my2 my3 //删除指定的key
exists my1 //检验key是否存在
rename my1(旧的名称) newmy1(新的名称) //重命名
expire newmy1 1000 //设置过期时间为1000秒
ttl newmy1 //查看key所剩的时间
type newmy1 //获取指定key的类型

redis特性
#多数据库
select 1 //选择数据库
最多连接16台数据库
flushall //清除数据库
清除数据库1时,会把数据库0给清除掉
move myset(key) 1(一号数据库) //移动key到其他数据库
#事务
在事务中所有命令都会串行化执行,不会给其他数据库有任何命令,事务中的命令都会原子化执行,当出现异常时,后面的命令都会被执行,在运行时,当出现硬件问题、网络中断等等,事务中的命令将不会被执行,事务外的才会执行
multi //事务开启,在‘multi’里的命令都被视为事务中的命令,存储在命令的队列当中
exec //相当于提交 当执行这个命令,事务里面的命令都会被原子化执行
discard //相当于回滚
#事务的提交
窗口1


窗口2:窗口1累加两次后,窗口2获取值时还是2

窗口1:提交事务

窗口2:这时窗口2才能看到累加的结果

#事务的回滚
















版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31803503/article/details/79246210

redis的使用

redis
  • yzj479622672
  • yzj479622672
  • 2017-08-22 15:01:44
  • 1017

redis集合中的数据类型

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 String(字符串)s...
  • xingfeichen
  • xingfeichen
  • 2016-11-21 14:37:23
  • 944

Redis学习笔记整理

  • 2017年11月14日 14:47
  • 82KB
  • 下载

redis-笔记

  • 2016年08月31日 11:04
  • 850KB
  • 下载

redis

本文章根据菜鸟教程整理而来,详细内容可见:点击打开链接 一、redis简介 redis是一个内存性数据库,特征有: 1、可以持久化到硬盘上 2、数据结构支持字符串、哈希、lis...
  • search_forever
  • search_forever
  • 2018-03-30 09:21:37
  • 20

Redis支持的五种数据类型

 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 1、String(字符串) ...
  • Sws1994
  • Sws1994
  • 2017-09-12 21:50:15
  • 165

Redis学习笔记(二)

一、通过Jedis客户端连接Redis缓存步骤: 1、添加jar包: pom坐标: dependency>      groupId>redis.clientsgroupId>      artif...
  • sd4422739
  • sd4422739
  • 2015-11-18 09:26:07
  • 313

Redis学习三(数据类型)

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。String(字符串) string是redis...
  • qq_32337109
  • qq_32337109
  • 2017-07-27 16:46:56
  • 105

redis学习

redis系统学习 https://www.processon.com/view/58d1eac9e4b09ea85d9f55d4 百度云学习视频 链接: https://pan.baidu.co...
  • lvbaolin123
  • lvbaolin123
  • 2017-10-26 16:38:41
  • 221

redis学习笔记

  • 2017年04月27日 09:45
  • 2.12MB
  • 下载
收藏助手
不良信息举报
您举报文章:Redis学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)