redis入门学习

redis

redis数据支持的值类型: 键都是字符串

1 字符串类型

2 散列类型--- hash

3 列表类型--- list

4 集合类型--- set

5 有序集合类型--sortedset

ps:注意命名:
     key的常用的写法: 项目名_子模块_key名称

字符串类型:
设置:set key value
获取:get key
删除:del key
自增 +1:incr key
自减 -1:decr key
扩展的命令:
getset key value:先获取再设置
incrby key count:指定增加数量
decrby key count:指定减少数量
append key value:追加
若有指定的key 则追加
若无,则设置一个

hash (存储对象的属性值):把值看成map集合

设置:
hset key subkey1 subvalue1 :设置一个键值对
hmset key subkey1 subvalue1 subkey2 subvalue2 ...:设置多个键值对

获取:
hget key subkey:获取一个子键的值
hmget key subkey1 subkey2...:获取多个子键的值
hgetall key:获取所有的键值对

删除-子键
hdel key subkey1 subkey2 ...

hdel user2 age

-----------------------------------------------------------------------------------------------------
列表类型 -list

两端的插入:
lpush key member1 member2.. : 往左边开始插入

a b c d

lpush l1 a b c d

d,c,b,a


rpush key member1 member2.. :往右边开始插入
e f g h

rpush l1 e f g h

e,f,g,h

l1=e f g h || l1=d c b a e f g h


lrange key startindex endindex
lrange key 0 -1 :查看所有
lrange key 0 2

两端的删除:
lpop key :左边弹出一个
lpop l1


rpop key :右边弹出一个
rpop l1

扩展:

llen key :获取key对应的元素数量
lrem key count member :在key中移除指定个数的成员 l2 = a b c d a b c d a b c d
count > 0 :从左往右移除指定个数 lrem l2 2 a l2 =b c d b c d a b c d
count < 0 :从右往左移除指定个数 lrem l2 -2 d l2 = b c d b c a b c
count = 0 :清空list中指定元素 lrem l2 0 c l2 = b d b a b
lrem l2 3 c-->lrem l2 -3 c
del key : 全删

-----------------------------------------------------------------------------------------------------

集合类型--set类型
特点:无序唯一

sadd key member1 member2 :添加 a b c 4

srem key member1 member2 :移除指定元素

smembers key :查看

扩展:
sismember key member :判断一个set中是否有指定的成员
有:1
无:0


聚合运算 sa2=a b c d sa3=b c d e
sdiff key1 key2 :我有你没有
sunion key1 key2:我有加你有 a b c d b c d e == a b c d e
sinter key1 key2:我有你也有 b c d

sdiffstore key1 key2 key3:将key2有的key3没有的差异部分插入key1
sunionstore key1 key2 key3:将key2和key3并集部分插入key1
sinterstore key1 key2 key3:将key2和key3交集部分插入key1

sa1=a b c d

sa2=b c d e

sinterstore sa3 sa1 sa2

del key : 全删

--------------------------------------------------------------------------------------------------

sortedset类型(排行榜)
必须要有一个数值来与之关联,因为要通过这个数值来排序

zadd key score1 member1 score2 member2...: 添加

zscore key member :获取成员的得分

zrem key member1 member2... :删除指定成员

zcard key :展示元素的长度

展示所有的元素:
zrange key startindex endindex [withscores] 升序
zrevrange key 0 -1 withscores [withscores] 降序

del key : 全删

------------------------------------------------------------------------------------------------

redis通用的操作(掌握)

4 del key:删除指定key

1 keys *:查询所有的key
2 exists key:判断是否有指定的key 若有返回1,否则返回0

3 ttl key:展示指定key的存活时间
若返回值为 -1:永不过期
若返回值为 -2:已过期或者不存在
* expire key 秒数:设置这个key在缓存中的存活时间

5 rename key 新key:重命名

6 type key:判断一个key的类型

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

redis的特性--和数据库相关的命令操作

1 多数据库(掌握)

select index:切换库
move key 指定数据库: 将当前库的数据移动到指定库中
dbsize: 返回当前库中有多少个key
flushdb:清空当前数据库数据
flushall:清空当前实例下所有的数据库数据

 

2 消息的订阅和发布(了解)

发布信息:publish 频道 消息内容

订阅单个信息: subscribe 频道1
订阅多个信息: psubscribe channel 频道1 频道2...

小A --在redis中订阅java

小B --在redis中订阅java和js

 

ps: redis的事务(了解)
关系型数据库和非关系型数据库的事务区别:
关系型数据库的事物:
1 事务执行期间,按照顺序依次执行每一条程序,直到全部执行完毕才提交
2 事务执行期间,如果遇到了异常,将会回滚,下面任何程序都不会执行了

非关系型数据库的事物:
1 事务执行期间,所有的任何程序全部处于等待不会执行,直到提交事务的时候才会按照顺序依次执行
2 事务执行期间,如果遇到了异常,将会被忽略继续往下执行程序

注意:工作中在程序中使用的是关系型数据库的事务

----------------------------------------------------------------------------------------------------

redis的持久化(了解):
持久化: 就是将数据从内存保存到磁盘

1 rdb(快照方式)
默认开启的
bin/redis.conf 查save

保存策略:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed

2 aof(配置文件命令方式)
默认不开启
若要开启,必须修改配置文件bin/redis.conf 搜appendonly
appendonly yes

保存策略:
# appendfsync always 每次都写入
# appendfsync everysec 每秒写入
appendfsync no 不写入

java代码操作redis数据库数据(重点)
java代码-->jdbc-->mysql
java代码-->jsdis-->redies

jedis:相当于jdbc
使用步骤:
1.导入jar包
2.创建jedis对象
new Jedis("192.168.17.136", 6379)
3.通过jedis操作redis数据库
4.释放资源

使用连接池优化:
// 创建数据源的配置对象
JedisPoolConfig config = new JedisPoolConfig();
// 配置初始化连接
config.setMaxTotal(1000);
// 配置空闲时期的最大连接
config.setMaxIdle(5);
.......

// 创建一个连接池
JedisPool pool = new JedisPool(config, "192.168.2.132",6379);
// 获取jedis对象
Jedis jedis = pool.getResource();

posted @ 2018-02-04 21:13  bo客先生  阅读(123)  评论(0编辑  收藏  举报